Stay Sidekick is organized as a monorepo with four main directories —Documentation Index
Fetch the complete documentation index at: https://mintlify.com/sdurutr436/stay-sidekick/llms.txt
Use this file to discover all available pages before exploring further.
web/, frontend/, backend/, and nginx/ — plus shared tooling at the root. Understanding the layout helps contributors navigate the codebase, locate the right module for a change, and understand how the Node subprojects relate to one another through the root pnpm orchestration scripts.
Project directory tree
The full repository structure, as documented in the README, is as follows:Backend structure
The Flask API lives underbackend/app/ and is organized around Blueprint modules. Each operational feature of the platform is an isolated Blueprint, and shared infrastructure lives in dedicated modules consumed by all of them.
Feature Blueprints
Each operational tool is a self-contained Blueprint with its own
routes.py, service.py, repository.py, schemas.py, and model.py:h_maestro_apartamentos— apartment master catalogue, PMS sync, XLSX importh_mapa_de_calor— operational heatmap, date-range check-in/out visualizationh_notificaciones_tardias— late check-in detection and message templatesh_sincronizador_contactos— Google Contacts OAuth sync and CSV exporth_vault_comunicaciones— communication templates with optional AI assistance
Shared Modules
Cross-cutting modules used by all Blueprints:
auth— JWT HS256 authentication, BCrypt password hashingempresas— multi-tenant company management and onboardingusuarios— user management, roles, and password resetperfil— per-company profile configuration and integrationscontact— public contact form endpointsolicitud— company sign-up request flowsecurity— CSRF double-submit cookie, JWT guard, honeypot, IP whitelistcommon— Fernet crypto (crypto.py), AI service, XLSX reservation parsing, sanitizers
Frontend structure
The Angular 21 SPA lives underfrontend/src/app/. Components are built as standalone Angular components following an atomic design hierarchy — atoms, molecules, organisms — and are organized under frontend/src/app/components/.
The shared SCSS design system lives at frontend/src/styles/ and follows the ITCSS (Inverted Triangle CSS) architecture with BEM naming conventions:
| ITCSS Layer | Directory | Contents |
|---|---|---|
| Settings | settings/ | Global variables — typography, colour tokens, breakpoints |
| Tools | tools/ | Reusable Sass mixins and functions |
| Generic | generic/ | CSS resets and box-model normalization |
| Elements | elements/ | Base styles for bare HTML elements |
| Layout | layout/ | Grid system, flex helpers, container |
| Components | components/ | BEM-named UI atoms and organisms |
| Utilities | utilities/ | Single-purpose utility classes |
| Animations | animations/ | @keyframes and transition definitions |
SCSS styles are shared between
web/ and frontend/ — the public 11ty site compiles its stylesheets directly from frontend/src/styles/. Any change to a style in that directory will affect both the Angular SPA and the public static site simultaneously.Public site
The public-facing marketing and legal content is a static site built with 11ty + Nunjucks, located inweb/src/. It is entirely separate from the Angular SPA and does not require a running backend to build or serve.
_includes/
Nunjucks layouts and reusable partials shared across all public pages.
_data/
Global data files (JSON/JS) injected into Nunjucks templates at build time.
producto/, legal/, empresa/
Content directories for product feature pages, legal notices (GDPR, LSSI-CE), and company information pages.
web/src/assets/styles/ directory contains only the SCSS entry point — the actual source layers are resolved from frontend/src/styles/ at compile time by 11ty’s asset pipeline.
Root pnpm orchestration
The rootpackage.json orchestrates all Node subprojects from a single location using pnpm -C <dir> to delegate commands into each sub-directory. There is no workspaces field — the root package simply wires up convenience scripts. The concurrently package is the only root-level dev dependency; it is used to run 11ty and Angular in parallel during development.
pnpm run dev from the repo root is the standard way to start local development. Both services stream their output to the same terminal, colour-coded by prefix (cyan for 11ty, magenta for Angular). If either process exits with a non-zero code, --kill-others-on-fail terminates the other automatically.
Development scripts
The following pnpm scripts are available from the repository root:| Script | What it does | Port |
|---|---|---|
pnpm run dev | Start all Node services (11ty + Angular) concurrently | 8080, 4200 |
pnpm run dev:web | Start only the 11ty static site | 8080 |
pnpm run dev:app | Start only the Angular SPA | 4200 |
pnpm run install:all | Install all Node dependencies across frontend/ and web/ | — |
Enable pnpm via Corepack
packageManager field in package.json without a separate install.Install all Node dependencies
concurrently). The second installs dependencies inside both frontend/ and web/.Start all Node services

