as-services/DEVELOPER.md
devthejo d1d8f725ce
All checks were successful
/ build (map[dockerfile:./services/app/Dockerfile name:app]) (push) Successful in 1m47s
/ build (map[dockerfile:./services/hasura/Dockerfile name:hasura]) (push) Successful in 2m7s
/ build (map[dockerfile:./services/files/Dockerfile name:files]) (push) Successful in 1m48s
/ build (map[dockerfile:./services/tasks/Dockerfile name:tasks]) (push) Successful in 2m7s
/ build (map[dockerfile:./services/watchers/Dockerfile name:watchers]) (push) Successful in 2m4s
/ build (map[dockerfile:./services/api/Dockerfile name:api]) (push) Successful in 2m16s
/ build (map[dockerfile:./services/web/Dockerfile name:web]) (push) Successful in 25s
/ deploy (push) Successful in 12s
chore: use devbox
2025-09-11 11:54:41 +02:00

4.2 KiB

Alerte-Secours Services - Developer Documentation

This document contains technical information for developers working on the Alerte-Secours microservices backend.

Development Quick Start

Requirements

  • Docker
  • Devbox
  • Android SDK (for mobile development)
  • Java 8+ (for Android development)

Installation

  1. Clone the repository:
git clone https://codeberg.org/alerte-secours/alerte-secours
cd alerte-secours
  1. Install devbox if not already installed:
curl -fsSL https://get.jetpack.io/devbox | bash
  1. Enter devbox shell (this will automatically install Node.js 20 and Yarn 4.6.0):
devbox shell
  1. Install dependencies:
yarn
  1. Set up environment variables:
cp .env.default .env

Start Services

Start all services with:

yarn dev:up

Or using devbox scripts:

devbox run dev:up

View logs:

yarn dev:logs

Or using devbox:

devbox run dev:logs

Using Devbox

Once you're in the devbox shell, you have access to:

  • Node.js 20 (automatically installed)
  • Yarn 4.6.0 (automatically installed)
  • All project scripts and environment variables
  • PostgreSQL client tools

To exit the devbox shell:

exit

To run commands from outside the shell:

devbox run <command>

Available devbox scripts:

  • devbox run dev - Start development environment
  • devbox run dev:up - Start all services
  • devbox run dev:logs - View development logs
  • devbox run console - Open development console

Public Staging Environment

For development and testing, you can use our public staging environment:

Endpoints (Local Development)

Services

Consoles

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 or GitHub issue tracker.