sarlink-portal-api/README.md
i701 83db42cc60
Some checks failed
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 4m12s
Refactor and enhance device management and authentication features
- Updated the `reverse_dhivehi_string` function to correct the range for combining characters.
- Added new device handling in the health check view and integrated the `add_new_devices_to_omada` task.
- Improved date handling in `CreateTemporaryUserView` to ensure proper string conversion.
- Enhanced OTP sending by converting mobile numbers to strings.
- Implemented MAC address validation in the `Device` model using a custom validator.
- Removed unnecessary fields from the `CreateDeviceSerializer`.
- Normalized MAC address format in the `DeviceListCreateAPIView`.
- Updated the `djangopasswordlessknox` package to improve code consistency and readability.
- Added migration to enforce MAC address validation in the database.
2025-04-25 14:37:27 +05:00

54 lines
1.5 KiB
Markdown

# sarlink-portal-api
API for SARLink portal in Django Rest Framework.
## Deployment steps
1. clone the repo `git clone git@github.com:i701/sarlink-portal-api.git`
2. Create virtual enviroment `virtualenv venv` and activate it `source venv/bin/activate`
3. Install requirements `pip install -r requirements.txt`
4. Copy .env.example to .env and fill in the configs `cp .env.example .env`
5. generate static `python manage.py collectstatic`
6. Run Migrations `python manage.py migrate`
## deployement with Docker
1. Create `compose.yml`
```yaml
services:
portal-api:
hostname: portal-api
image: git.shihaam.dev/sarlink/sarlink-portal-api/api
env_file: .env.api
nginx:
hostname: portal-api-nginx
image: git.shihaam.dev/sarlink/sarlink-portal-api/nginx
volumes_from:
- portal-api
ports:
- 4000:80
depends_on:
- portal-api
portal-db:
image: postgres:14
restart: always
hostname: portal-db
volumes:
- ./database:/var/lib/postgresql/data
env_file: .env.db
```
2. Start services: `docker compose up -d`
3. Run Migrations: `docker compose exec portal-api python manage.py migrate`
4. Test api with curl:
```bash
curl -X POST http://localhost:4000/api/auth/login/ \
-H "Content-Type: application/json" \
-d '{"username":"admin", "password":"soemthign"}'
```
expected response: `{"message":"Unable to log in with provided credentials."}`
5. For Celery to work run the worker and the beat
```
celery -A apibase worker --loglevel=info
celery -A apibase beat --loglevel=info
```