# Let's Event > **Simple, fast meeting schedulingβ€”no hassle.** Let's Event is a lightweight alternative to Calendly. Share your availability, let others book directly. That's it. --- ## πŸš€ Quick Start ```bash # Clone repository git [clone git@github.com:edgarberlinck/event.me.git](https://lightroasted.vps-kinghost.net/rmcampos/event.me) cd event.me # Install dependencies npm install # Setup environment cp .env.example .env # Edit .env with your database URL and auth secrets # Start PostgreSQL (Docker) docker-compose up -d # Run migrations npx prisma db push # Start development server npm run dev ``` Visit: http://localhost:3000 --- ## πŸ“š Documentation ### For Developers **[Technical Documentation](docs/technical/README.md)** - System architecture - Database schema - API routes - Testing strategy - Deployment guide ### For Business **[Business Documentation](docs/business/README.md)** - Product overview - Value proposition - Target audience - Feature roadmap - Go-to-market strategy --- ## πŸ› οΈ Tech Stack - **Framework**: Next.js 16 (App Router with Turbopack) - **Language**: TypeScript 5 - **Database**: PostgreSQL 16 + Prisma 7 - **Auth**: NextAuth v5 (Credentials + Google OAuth) - **Integrations**: Google Calendar API (auto event creation + Meet links) - **UI**: Tailwind CSS 4 + shadcn/ui - **Testing**: Playwright (E2E) + Vitest (Unit) - **Code Quality**: Biome 2.4.4 --- ## πŸ“¦ Scripts ```bash npm run dev # Start development server npm run build # Production build npm start # Start production server npm run lint # Check code quality (Biome) npm run format # Format code (Biome) npm test # Run E2E tests (Playwright) npm run test:ui # Playwright UI mode npm run db:studio # Open Prisma Studio ``` --- ## 🎯 Current Status **Phase 1: Authentication & Foundation** βœ… - User registration & login - Protected dashboard - Database schema - CI/CD pipeline - Pre-commit hooks (Biome) - E2E tests passing **Phase 2: Core Scheduling** βœ… - βœ… Availability management - βœ… Event type creation with booking constraints - Max bookings per week - Minimum notice hours - Maximum notice days **Phase 3: Booking System** βœ… - βœ… Public booking pages with calendar UI - βœ… Real-time slot availability - βœ… Booking creation with validation - βœ… Booking management dashboard - βœ… Cancel bookings - βœ… Constraint enforcement - βœ… Booking confirmation - βœ… 32 E2E tests passing **Phase 4: Google Calendar Integration** βœ… - βœ… Google OAuth authentication - βœ… Automatic calendar event creation - βœ… Google Meet link generation - βœ… Guest invitations - βœ… Token refresh handling **Phase 5: Enhancements** πŸ“‹ - [ ] Email notifications (booking confirmations, reminders) - [ ] Advanced time zone support - [ ] Payment integration - [ ] Recurring availability --- ## πŸ§ͺ Testing ### E2E Tests (Playwright) ```bash npm test # All tests npm run test:headed # With browser UI npm run test:debug # Debug mode ``` ### Unit Tests (Vitest) ```bash npm run test:unit # Run unit tests ``` **Coverage**: 32 E2E tests covering: - Authentication (register/login/logout) - Availability management - Event type CRUD with constraints - Public booking flow - Booking validation --- ## πŸ” Environment Variables ```env # Database DATABASE_URL="postgresql://postgres:postgres@localhost:55002/eventme" # Authentication (generate with: openssl rand -base64 32) NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_SECRET="your-secret-here" AUTH_URL="http://localhost:3000" AUTH_SECRET="your-secret-here" ``` --- ## πŸš€ Deployment ### Vercel from Gitea Since this project is hosted on Gitea, we use Vercel CLI for deployment: 1. **Create Vercel project**: ```bash npm i -g vercel vercel login vercel link ``` 2. **Get environment variables**: ```bash cat .vercel/project.json # Note: VERCEL_ORG_ID and VERCEL_PROJECT_ID ``` 3. **Add Gitea Secrets**: - Go to Gitea β†’ Repository Settings β†’ Secrets - Add `VERCEL_TOKEN` (get from `vercel tokens create`) - Add `VERCEL_ORG_ID` from project.json - Add `VERCEL_PROJECT_ID` from project.json 4. **Push to main** - Deployment triggers automatically via `.gitea/workflows/deploy.yml` ### Neon Database Setup 1. Create project at [neon.tech](https://neon.tech) 2. Copy connection string from Neon Console 3. Set as `DATABASE_URL` in Vercel Environment Variables: ```bash vercel env add DATABASE_URL ``` ### Alternative: Docker ```bash docker-compose up --build ``` Includes PostgreSQL + Next.js app. --- ## πŸ“– Project Structure ``` event.me/ β”œβ”€β”€ app/ # Next.js App Router β”‚ β”œβ”€β”€ (auth)/ # Auth pages (login, register) β”‚ β”œβ”€β”€ dashboard/ # Protected dashboard β”‚ └── api/ # API routes (NextAuth) β”œβ”€β”€ components/ # React components β”‚ └── ui/ # shadcn/ui components β”œβ”€β”€ lib/ # Utilities & database β”‚ β”œβ”€β”€ prisma.ts # Prisma client β”‚ └── utils.ts # Helper functions β”œβ”€β”€ prisma/ # Database schema & migrations β”‚ └── schema.prisma # Data model β”œβ”€β”€ tests/ # E2E tests (Playwright) β”œβ”€β”€ docs/ # Documentation β”‚ β”œβ”€β”€ technical/ # Technical docs β”‚ └── business/ # Business docs └── .github/ # CI/CD workflows ``` --- ## 🀝 Contributing 1. Fork the repository 2. Create feature branch (`git checkout -b feature/amazing-feature`) 3. Commit changes (`git commit -m 'Add amazing feature'`) 4. Push to branch (`git push origin feature/amazing-feature`) 5. Open Pull Request **Before submitting**: - Run `npm run lint` (must pass) - Run `npm test` (all tests must pass) - Update documentation if needed --- ## πŸ“ License MIT License - see [LICENSE](LICENSE) file for details --- ## πŸ™ Acknowledgments - **Next.js** - React framework - **Prisma** - Database ORM - **NextAuth** - Authentication - **shadcn/ui** - UI components - **Biome** - Fast linting & formatting --- **Built with ❀️ in Brazil πŸ‡§πŸ‡·**