All checks were successful
/ build (map[dockerfile:./services/hasura/Dockerfile name:hasura]) (push) Successful in 2m6s
/ deploy (push) Successful in 8s
/ build (map[dockerfile:./services/api/Dockerfile name:api]) (push) Successful in 43s
/ build (map[dockerfile:./services/app/Dockerfile name:app]) (push) Successful in 1m27s
/ build (map[dockerfile:./services/tasks/Dockerfile name:tasks]) (push) Successful in 1m44s
/ build (map[dockerfile:./services/watchers/Dockerfile name:watchers]) (push) Successful in 1m54s
/ build (map[dockerfile:./services/web/Dockerfile name:web]) (push) Successful in 1m59s
/ build (map[dockerfile:./services/files/Dockerfile name:files]) (push) Successful in 1m14s
134 lines
3.3 KiB
Markdown
134 lines
3.3 KiB
Markdown
# Alerte-Secours Services - Developer Documentation
|
|
|
|
This document contains technical information for developers working on the Alerte-Secours microservices backend.
|
|
|
|
## Development Quick Start
|
|
|
|
### Requirements
|
|
|
|
- Docker
|
|
- Direnv
|
|
- Node.js (>=20)
|
|
- Yarn (v4.6.0+)
|
|
|
|
### Installation
|
|
|
|
1. Clone the repository:
|
|
```sh
|
|
git clone https://codeberg.org/alerte-secours/alerte-secours
|
|
cd alerte-secours
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```sh
|
|
yarn
|
|
```
|
|
|
|
3. Set up environment variables:
|
|
```sh
|
|
cp .env.default .env
|
|
```
|
|
|
|
### Start Services
|
|
|
|
Start all services with:
|
|
```sh
|
|
yarn dev:up
|
|
```
|
|
|
|
View logs:
|
|
```sh
|
|
yarn dev:logs
|
|
```
|
|
|
|
### Public Staging Environment
|
|
|
|
For development and testing, you can use our public staging environment:
|
|
|
|
- API: https://api-staging.alerte-secours.fr
|
|
- GraphQL: https://graphql-staging.alerte-secours.fr
|
|
- Web Interface: https://web-staging.alerte-secours.fr
|
|
|
|
### Endpoints (Local Development)
|
|
|
|
#### Services
|
|
- API: http://localhost:4200
|
|
- Files: http://localhost:4292
|
|
- Hasura: http://localhost:4201
|
|
- Tasks Service
|
|
- Watchers Service
|
|
- Web: http://localhost:4203
|
|
|
|
#### Consoles
|
|
- [Hasura Console](http://localhost:4295)
|
|
- [Minio Console](http://localhost:4291)
|
|
- [API Swagger](http://localhost:4200/api/v1/swagger/)
|
|
- [API GraphQL](http://localhost:4200/api/v1/graphql)
|
|
- [Files API](http://localhost:4292/api/v1/swagger/)
|
|
|
|
#### API URLs
|
|
- `/api/v1`
|
|
- `/spec` - API Specification
|
|
- `/oas` - OpenAPI Service
|
|
- `/swagger` - Swagger Documentation
|
|
- `/graphql` - GraphQL Endpoint
|
|
- `/status` - Service Status
|
|
- `/` - Root Endpoint
|
|
|
|
## Technical Stack
|
|
|
|
### Backend
|
|
- **Node.js** (>=20) - Core runtime
|
|
- **PostgreSQL** - Primary database
|
|
- **Redis** - Caching and queue deduplication
|
|
- **RabbitMQ** - Message queue
|
|
- **Hasura** - GraphQL engine
|
|
- **OpenAPI** - API specification and documentation
|
|
- **Modjo Framework** - Microservices architecture
|
|
|
|
### Frontend
|
|
- **React** - Web interface
|
|
- **React Native** - Mobile application
|
|
- **Apollo Client** - GraphQL integration
|
|
- **MapView** - Geolocation visualization
|
|
|
|
### Infrastructure
|
|
- **Docker** - Containerization
|
|
- **Microservices Architecture** - Separate services for API, files, tasks, etc.
|
|
- **CQRS Pattern** - Command Query Responsibility Segregation
|
|
- **Event-Driven Architecture** - Using message queues
|
|
|
|
### Key Features
|
|
- Real-time alerts and notifications
|
|
- Geolocation tracking and mapping
|
|
- Emergency services integration
|
|
- User authentication and authorization
|
|
- File storage and management
|
|
- Background task processing
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
services/
|
|
├── api/ # Main API service
|
|
├── app/ # Frontend application
|
|
├── files/ # File handling service
|
|
├── hasura/ # GraphQL engine
|
|
├── tasks/ # Background task processing
|
|
├── watchers/ # Event monitoring
|
|
└── web/ # Web interface
|
|
|
|
libs/
|
|
├── common/ # Shared utilities
|
|
├── postgres-types/ # Database type definitions
|
|
├── redis-queue-dedup/ # Redis queue deduplication
|
|
└── utils/ # General utilities
|
|
```
|
|
|
|
## Contributing
|
|
|
|
We welcome contributions to Alerte-Secours. Please read our contribution guidelines before submitting pull requests.
|
|
|
|
## Support
|
|
|
|
For technical support, please open an issue on our [Codeberg issue tracker](https://codeberg.org/alerte-secours/alerte-secours/-/issues) or [GitHub issue tracker](https://github.com/alerte-secours/alerte-secours/issues).
|