Application made with Laravel 10 that consists of the creation of a CRUD of a user and system authentication api that contains the following functionalities:
- Relationships between different models.
- Primary key format UUID.
- Contains endpoints of type GET, POST, PUT and DELETE
- Postman collection.json file to import and create use endpoints.
- Requests validations.
- Exception handling.
- Feature testing.
- Redis Cached data and Queues
- Email sending Notification to recovery password.
- Email sending notification to verify the user.
- Queues and Jobs.
- Factories.
- Enums.
- Traits.
- Middleware.
- Policies.
- Observers.
- Cached data.
- File Storage.
- Notifications with broadcast.
- Exports in Excel and PDF format.
- Blade Email Templates.
- Multi language support.
- Migration file to create all the tables in the database.
- Seeders are in JSON format.
- PHP 8.2.*
- Search filters of the games that are inserted in the database.
- Websockets with Pusher.
- Users contain different roles and permissions.
- The project contains the files to deploy it in Docker.
Key | Value |
---|---|
Authorization | {Token provided by Sanctum} |
Accept | application/json |
Content-Type | application/json |
Accept-Language | ['en', 'es'] |
$ composer install && php artisan key:generate && php artisan storage:link && php artisan migrate --seed && php artisan test
Password: password
Method | Path | Description | Auth | Is Admin |
---|---|---|---|---|
POST | /api/auth/login | Login a user | No | No |
GET | /api/auth/check | Check if user authenticated | Yes | No |
GET | /api/auth/logout | Log out a user | Yes | No |
POST | /api/auth/change/password | Change the password for the authenticated user | Yes | No |
POST | /api/auth/recovery/password | An email is sent to reset the password | No | No |
POST | /api/user/verification/email/notification | Sending an email to confirm the verification of the authenticated user | Yes | No |
GET | /api/user/verification/email/{id}/{hash} | Verify authenticated user | Yes | No |
Method | Path | Description | Auth | Is Admin |
---|---|---|---|---|
GET | /api/user | Get all the users | Yes | Yes |
GET | /api/user/{id} | Get a user | Yes | Yes |
POST | /api/user | Add new user | Yes | Yes |
PUT | /api/user/{id} | Update a user | Yes | Yes |
DELETE | /api/user/{id} | Delete a user | Yes | Yes |
GET | /api/user/export/excel | Export all users in Excel format | Yes | Yes |
GET | /api/user/export/pdf | Export all users in Pdf format | Yes | Yes |
Method | Path | Description | Auth | Is Admin |
---|---|---|---|---|
GET | /api/roles | Get all the roles | Yes | Yes |
APP_URL="http://localhost:8000"
DB_CONNECTION=""
DB_HOST=""
DB_PORT=""
DB_DATABASE=""
DB_USERNAME=""
DB_PASSWORD=""
DB_TEST_CONNECTION=""
DB_TEST_HOST=""
DB_TEST_PORT=""
DB_TEST_DATABASE=""
DB_TEST_USERNAME=""
DB_TEST_PASSWORD=""
PUSHER_APP_ID=""
PUSHER_APP_KEY=""
PUSHER_APP_SECRET=""
PUSHER_APP_CLUSTER=""
QUEUE_CONNECTION=""
CACHE_DRIVER=""
MAIL_MAILER=""
MAIL_HOST=""
MAIL_PORT=""
MAIL_USERNAME=""
MAIL_PASSWORD=""
MAIL_FROM_ADDRESS=""
REDIS_CLIENT=""
REDIS_HOST=""
REDIS_PASSWORD=""
REDIS_PORT=""
DOMAIN_FRONTEND="http://localhost:9000"
Docker repository: https://hub.docker.com/r/javi98/laravel-api-crud-template
- php:8.2.13-fpm -
:9000
- nginx:alpine -
:8000->80/tcp
- mariadb:11.2.2 -
:3306
- mailhog:v1.0.1 -
:1025 # smtp server
:8025 # web ui
- soketi:1.6-16-debian -
:6001 # soketi port
:9601
- redis:7.2.4 -
:6379
- phpmyadmin:5.2.1 -
:8085->80/tcp
βββ laravel-api-crud-template-app βββ laravel-api-crud-template-web βββ laravel-api-crud-template-db βββ laravel-api-crud-template-smtp βββ laravel-api-crud-template-soketi βββ laravel-api-crud-template-redis βββ laravel-api-crud-template-phpmyadmin
$ git clone https://github.com/JAVI-CC/Laravel-API-CRUD-Template.git
$ cd Laravel-API-CRUD-Template
$ cp .env.example .env
$ docker compose up -d
$ docker compose exec app chmod +x ./docker-config/run.sh
$ docker compose exec app ./docker-config/run.sh
In case you are using your IDE to develop the application and it odes not detect the files it contains within the vendor folder, you have to copy the files from the vendor folder of the container to the host machine with the following command.
$ docker compose cp app:/var/www/vendor .
Once you have the containers deployed, you can access the API at http://localhost:8000