← Back to Main Page
The tools below are the ones actually used by the Educado project. For the runtime topology see
Deployment & Infrastructure, and for the system design see
System Architecture.
Development and collaboration
| Tool |
Description |
Link |
| GitHub |
Source hosting, code review and issue tracking for every Educado repository. |
GitHub |
| GitHub Actions |
CI for the repositories, including the documentation build (mkdocs build --strict). |
GitHub Actions |
| MkDocs Material |
Static site generator behind this documentation. |
MkDocs Material |
| uv |
Python dependency manager used to run and build the documentation site. |
uv |
Back end
| Tool |
Description |
Link |
| Node.js 20 |
Runtime for the API and the email worker. |
Node.js |
| Express 5 |
HTTP framework used to build the REST API. |
Express |
| TypeScript |
Language used across API, web and mobile. |
TypeScript |
| Sequelize |
ORM mapping the PostgreSQL schema to the models in src/models. |
Sequelize |
| PostgreSQL 16 |
Relational database, single source of truth for platform data. |
PostgreSQL |
| Redis 7.2 |
Backing store for the BullMQ job queue. |
Redis |
| BullMQ |
Job queue used for asynchronous email delivery. |
BullMQ |
| MinIO |
S3 compatible object storage for images and videos. |
MinIO |
| Resend |
Transactional email provider (verification, password reset, registration decisions). |
Resend |
| Swagger UI |
API documentation served by the API itself at /docs/. |
Swagger |
| Jest |
Unit and integration test runner for the API, with supertest for HTTP level tests. |
Jest |
| ESLint + Prettier |
Linting and formatting for the TypeScript codebases. |
ESLint |
Front end
| Tool |
Description |
Link |
| Vite |
Build tool and dev server for the web application. The web app is plain TypeScript, no framework. |
Vite |
fetch wrapper |
The web application has no HTTP client library. All calls go through a small in house wrapper over the native fetch, in src/shared/api/http.ts, which prefixes the base URL, attaches the bearer token, parses JSON and throws a typed ApiError. |
fetch |
| flatpickr |
Date picker used in the web auth flow, in src/features/auth/components/AuthProfileStep.ts and src/features/auth/pages/EditProfilePage.ts, with the month select plugin and the pt-BR locale. |
flatpickr |
| nginx |
Serves the built web assets in production and handles the SPA fallback. |
nginx |
| Expo (SDK 56) |
Toolchain for the React Native mobile app, Android first. |
Expo |
| React Native |
UI framework for the mobile app. |
React Native |
| EAS Build |
Builds the mobile binaries (.apk / .aab) for distribution. |
EAS Build |
axios is declared but not used
axios still appears in the dependencies of educado-web/package.json, but there is not a single import of
it in src/. It is a leftover and should not be used for new code: the fetch wrapper above already handles
the base URL, authentication and error shape consistently.
Infrastructure and delivery
| Tool |
Description |
Link |
| Coolify |
Self hosted PaaS (version 4.3.1) that deploys and supervises the API, the email worker and the web app. |
Coolify |
| Nixpacks |
Build strategy used by Coolify for the Node processes (API and email worker). |
Nixpacks |
| Docker |
Containerisation. The web app ships a multi stage Dockerfile; local infrastructure runs via Docker Compose. |
Docker |
| Traefik |
Reverse proxy managed by Coolify, terminating TLS for the public domains. |
Traefik |
Testing and inspection
| Tool |
Description |
Link |
| Postman |
Manual API exploration alongside Swagger UI. |
Postman |
| Swagger UI |
Interactive contract for the API, canonical for request shapes. |
Swagger |
← Back to Main Page