# Introduction

![Stack](https://img.shields.io/badge/stack-React%2019%20|%20Express%205%20|%20PostgreSQL%20|%20Socket.IO-blue) ![Monorepo](https://img.shields.io/badge/monorepo-pnpm%20%2B%20Turborepo-orange) ![Tests](https://img.shields.io/badge/tests-Vitest-green) ![License](https://img.shields.io/badge/license-MIT-green)

Kirona is a social platform centered around cinema and TV series, allowing users to discover content, manage their watchlist, interact with a community of friends, and communicate in real time. Built as a TypeScript monorepo with an Express 5 REST API, a React 19 frontend, and PostgreSQL.

***

## Quick navigation

### For contributors

| Resource                                                                                                 | Description                                                             |
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [Computer Setup](https://mathieusouflis.gitbook.io/kinora.tv/getting-started/computer-setup)             | Install VS Code, Node, pnpm, Docker — macOS and Windows (WSL2 + Devenv) |
| [Getting Started](https://mathieusouflis.gitbook.io/kinora.tv/getting-started/getting-started)           | Set up the project locally (with or without Phase access)               |
| [Development Workflow](https://mathieusouflis.gitbook.io/kinora.tv/getting-started/development-workflow) | Daily dev cycle, commands, and conventions                              |
| [Developer Guide](https://mathieusouflis.gitbook.io/kinora.tv/architecture-deep-dives/developer-guide)   | Architecture deep-dives and step-by-step guides                         |
| [CONTRIBUTING.md](https://github.com/mathieusouflis/HETIC-projet-cinema/blob/main/CONTRIBUTING.md)       | How to contribute, PR process, commit conventions                       |

### Architecture

| Resource                                                                                 | Description                                           |
| ---------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [System Overview](https://mathieusouflis.gitbook.io/kinora.tv/architecture/architecture) | Monorepo structure, packages, Turborepo pipeline      |
| [Backend](https://mathieusouflis.gitbook.io/kinora.tv/architecture/backend)              | Clean Architecture, modules, middleware chain         |
| [Frontend](https://mathieusouflis.gitbook.io/kinora.tv/architecture/frontend)            | File-based routing, feature modules, SDK pipeline     |
| [Real-time](https://mathieusouflis.gitbook.io/kinora.tv/architecture/realtime)           | Socket.IO namespace, events, client singleton         |
| [CI/CD](https://mathieusouflis.gitbook.io/kinora.tv/architecture/ci-cd)                  | GitHub Actions workflows, Google Cloud Run deployment |

### Reference

| Resource                                                                                               | Description                                          |
| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- |
| [REST API](https://mathieusouflis.gitbook.io/kinora.tv/database-and-api/api)                           | All endpoints, JWT auth flow, response formats       |
| [Data Model](https://mathieusouflis.gitbook.io/kinora.tv/database-and-api/database)                    | ERD, table descriptions, indexes, migration strategy |
| [Technical Choices](https://mathieusouflis.gitbook.io/kinora.tv/technical-reference/technical-choices) | Why each technology was selected                     |
| [Project Report](https://mathieusouflis.gitbook.io/kinora.tv/technical-reference/rapport)              | Functional scope, team roles, architecture summary   |

***

## Developer Guide highlights

The [Developer Guide](https://mathieusouflis.gitbook.io/kinora.tv/architecture-deep-dives/developer-guide) covers the internal mechanics that every contributor needs to understand:

* [**Decorator System**](https://mathieusouflis.gitbook.io/kinora.tv/architecture-deep-dives/decorator-system) — How `@Controller`, `@Get`, `@Protected`, `@ValidateBody` etc. work and how `DecoratorRouter` builds Express routes and the OpenAPI spec from metadata
* [**TMDB Integration**](https://mathieusouflis.gitbook.io/kinora.tv/architecture-deep-dives/tmdb-integration) — The composite repository pattern: how content is fetched on demand from TMDB, stored in PostgreSQL, and served — with full sequence diagrams
* [**Error Handling**](https://mathieusouflis.gitbook.io/kinora.tv/architecture-deep-dives/error-handling) — The `AppError` hierarchy and how errors propagate through all layers to a consistent JSON response
* [**Creating a Module**](https://mathieusouflis.gitbook.io/kinora.tv/step-by-step-guides/creating-a-module) — End-to-end walkthrough: DB schema → migration → entity → repository → use cases → controller → registration → SDK regeneration
* [**Adding an Endpoint**](https://mathieusouflis.gitbook.io/kinora.tv/step-by-step-guides/adding-an-endpoint) — Fastest path to adding one route to an existing module
* [**Commit Conventions**](https://mathieusouflis.gitbook.io/kinora.tv/team-conventions/commit-conventions) — Message format, types, scopes
* [**Code Style**](https://mathieusouflis.gitbook.io/kinora.tv/team-conventions/code-style) — Biome rules, naming conventions, patterns
* [**Pull Request Guide**](https://mathieusouflis.gitbook.io/kinora.tv/team-conventions/pull-request) — Branch strategy, PR size, review process
