Aquí está el README sin los iconos:
Limpora is a web application and service that connects clients with freelance cleaning professionals, making it easy to get in touch, hire, and manage jobs in a clear, fast, and secure way.
- Bun: Runtime and environment manager (env variables built-in)
- ElysiaJS: High-performance TypeScript web framework
- TypeScript: Primary language across the full stack
- Mantine UI
- Zustand (global state)
- Zod (client-side validation)
The backend uses Bun as the runtime and ElysiaJS as the framework, leveraging TypeScript's native speed to deliver a high-performance REST API.
- Database: SQLite
- Validation: TypeBox
- Authentication: Firebase & googleapis (Email auth + OAuth)
The API is organized into independent modules. Each module encapsulates all its logic in the following files. Modules may not always have a Router, Queries, or specific Middleware — but they will always have a service and a model.
modules/
└── <module>/
├── index.ts # Router + endpoints
├── model.ts # Data types (source of truth)
├── queries.ts # Database access
├── service.ts # Business logic
├── guard.ts # Auth middleware
└── test.ts # Integration and unit tests
| File | Responsibility |
|---|---|
index.ts |
Defines HTTP routes and connects endpoints to handlers |
model.ts |
Declares types and schemas; the module's source of truth |
queries.ts |
Centralizes all database queries for the module |
service.ts |
Abstract class with static methods implementing business logic |
guard.ts |
Verifies and validates the access token before reaching the handler |
test.ts |
Integration and unit tests for both endpoints and service logic |
- Email verification for non-OAuth accounts
- CORS
- HPP (HTTP Parameter Pollution protection)
elysia-helmet- Rate limiting via
elysia-rate-limit - Role management with Firebase
- Endpoint authentication via Firebase tokens
- pino + pino-http
- Interactive and auto-generated API docs
- Easy frontend integration
- OpenAPI standard
- Designed for low maintenance and easy extension
- eslint-define-config: Linting configuration
- bun:test: Testing library (built into Bun)
- bun env: Environment variable management (built into Bun)
