Backend Alerte-Secours https://alerte-secours.fr
Find a file
devthejo ad32afd2f8
All checks were successful
/ build (map[dockerfile:./services/web/Dockerfile name:web]) (push) Successful in 1m23s
/ build (map[dockerfile:./services/tasks/Dockerfile name:tasks]) (push) Successful in 2m31s
/ build (map[dockerfile:./services/app/Dockerfile name:app]) (push) Successful in 48s
/ build (map[dockerfile:./services/hasura/Dockerfile name:hasura]) (push) Successful in 54s
/ build (map[dockerfile:./services/watchers/Dockerfile name:watchers]) (push) Successful in 2m21s
/ build (map[dockerfile:./services/files/Dockerfile name:files]) (push) Successful in 2m36s
/ build (map[dockerfile:./services/api/Dockerfile name:api]) (push) Successful in 2m47s
/ deploy (push) Successful in 10s
chore: add funding
2025-05-23 15:20:38 +02:00
.dev-secrets chore(init): available sources 2025-04-13 10:46:53 +02:00
.forgejo/workflows chore(init): available sources 2025-04-13 10:46:53 +02:00
.github chore: add funding 2025-05-23 15:20:38 +02:00
.husky chore(init): available sources 2025-04-13 10:46:53 +02:00
.vscode chore(init): available sources 2025-04-13 10:46:53 +02:00
.yarn chore(clean): remove yarn-dev-portal 2025-04-23 15:01:15 +02:00
dockerfile-x chore(init): available sources 2025-04-13 10:46:53 +02:00
docs chore(init): available sources 2025-04-13 10:46:53 +02:00
libs chore: clean 2025-04-22 12:23:38 +02:00
scripts chore: fix terminator-config for dev-logs 2025-04-27 11:56:10 +02:00
services chore: cleanup geodata wip 2025-05-08 09:33:12 +02:00
tests chore: clean 2025-04-22 12:23:38 +02:00
.aidigestignore chore(clean): remove yarn-dev-portal 2025-04-23 15:01:15 +02:00
.commitlintrc.json chore(init): available sources 2025-04-13 10:46:53 +02:00
.dockerignore chore(init): available sources 2025-04-13 10:46:53 +02:00
.editorconfig chore(init): available sources 2025-04-13 10:46:53 +02:00
.env.default chore(init): available sources 2025-04-13 10:46:53 +02:00
.envrc chore(init): available sources 2025-04-13 10:46:53 +02:00
.eslintrc.js chore(init): available sources 2025-04-13 10:46:53 +02:00
.gitignore chore(dev): replace tmuxp by terminator + fix end yarn-dev-portal removal 2025-04-23 15:40:36 +02:00
.node-version chore(init): available sources 2025-04-13 10:46:53 +02:00
.versionrc.json chore(init): available sources 2025-04-13 10:46:53 +02:00
.yarnrc.yml chore(clean): remove yarn-dev-portal 2025-04-23 15:01:15 +02:00
docker-compose.build.yaml chore(init): available sources 2025-04-13 10:46:53 +02:00
docker-compose.yaml chore(dev): replace tmuxp by terminator + fix end yarn-dev-portal removal 2025-04-23 15:40:36 +02:00
jsconfig.json chore(init): available sources 2025-04-13 10:46:53 +02:00
LICENSE.md chore(init): available sources 2025-04-13 10:46:53 +02:00
package.json chore(dev): replace tmuxp by terminator + fix end yarn-dev-portal removal 2025-04-23 15:40:36 +02:00
README.md docs: improve README 2025-05-10 11:24:07 +02:00
terminator-config chore: fix terminator-config for dev-logs 2025-04-27 11:56:10 +02:00
yarn.lock chore(dev): replace tmuxp by terminator + fix end yarn-dev-portal removal 2025-04-23 15:40:36 +02:00

Alerte-Secours - Le Réflexe qui Sauve

Alerte-Secours is a microservices-based emergency alert and response system designed to provide rapid assistance in emergency situations.

Official Website

Visit our official website at alerte-secours.fr

Development Quick Start

Requirements

  • Docker
  • Direnv
  • Node.js (>=20)
  • Yarn (v4.6.0+)

Installation

  1. Clone the repository:
git clone https://codeberg.org/alerte-secours/alerte-secours
cd alerte-secours
  1. Install dependencies:
yarn
  1. Set up environment variables:
cp .env.default .env

Start Services

Start all services with:

yarn dev:up

View logs:

yarn dev:logs

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

Licensing

Alerte-Secours is licensed under the DevTheFuture Ethical Use License (DEF License).

Key points:

  • Nonprofit Use: Free for nonprofit purposes
  • Profit Use: Requires a paid license
  • Personal Data: Must not be monetized or exploited
  • Ownership: All intellectual property rights remain with the licensor
  • Competitor Restriction: Competitors must obtain explicit permission

For full license details, see LICENSE.md.

Contributing

We welcome contributions to Alerte-Secours. Please read our contribution guidelines before submitting pull requests.

Support

For support, please open an issue on our Codeberg issue tracker or GitHub issue tracker.