# Calendar Booking Platform

A Calendly-style scheduling application that lets users register, define availability, connect external calendars, and share a public booking link.

## Documentation

| Document | Description |
|----------|-------------|
| [Complete Documentation](./docs/COMPLETE_DOCUMENTATION.md) | Full product, architecture, API, and integration guide |
| [Use Cases](./docs/USE_CASES.md) | All 89 use cases — host, guest, embed, calendar, system |
| [User Guide](./docs/USER_GUIDE.md) | End-user and host instructions |
| [API Reference](./docs/API_REFERENCE.md) | REST API endpoints and payloads |
| [Calendar Integrations](./docs/CALENDAR_INTEGRATIONS.md) | Google, Microsoft, and Apple/iCloud setup |
| [Database Schema](./docs/DATABASE_SCHEMA.md) | Tables, relationships, and indexes (PostgreSQL reference) |

### Developer Guides (Node + Angular + MySQL)

| Document | Description |
|----------|-------------|
| [MySQL Developer Guide](./docs/mysql.md) | MySQL 8 schema, migrations, embed tables, TypeORM |
| [Database Scripts](./database/README.md) | SQL migrations and deploy to server |
| [Node.js Developer Guide](./docs/node.md) | TypeScript MVC API, services, embed API, jobs |
| [Angular Developer Guide](./docs/angular.md) | Angular + NgRx (Redux), embed widget, third-party integration |

## Tech Stack

| Layer | Technology |
|-------|------------|
| Frontend | Angular 18+ with NgRx (Redux) |
| Backend | Node.js 20 + TypeScript, Express MVC |
| Database | MySQL 8 |
| Cache / Queue | Redis + BullMQ |
| Embed | Script tag, iframe, postMessage API |

## Quick Summary

1. **Host registers** → creates account, sets timezone and working hours, connects Google / Microsoft / Apple calendars.
2. **Host creates an event type** → e.g. "30-min consultation" with duration and buffers.
3. **Host shares a public link** → e.g. `https://book.example.com/alice/30min`.
4. **Guest books a slot** → sees only free times; booking is written to host calendars and confirmation emails are sent.

See [Complete Documentation](./docs/COMPLETE_DOCUMENTATION.md) for the full product spec, and the developer guides above for implementation details.
