Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 85 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,87 @@
# Schedule iCal generator
# ScheduleSync

## TODO
Convert course schedule screenshots into calendar files. Upload a screenshot and export to Google Calendar or generate an iCal file for everything else.

- [x] make it deploy
- [x] scaffold basic ui with mock data
- [ ] set up a database
- [ ] attach database to UI
- [ ] error management
- [ ] add auth
- [ ] analytics
## Tech Stack

- **Framework**: Next.js 15 with App Router
- **Language**: TypeScript
- **Database**: PostgreSQL with Drizzle ORM
- **Authentication**: Clerk
- **AI**: Google Gemini via OpenRouter
- **Styling**: Tailwind CSS
- **Analytics**: PostHog, Sentry

## Setup

1. **Clone and install dependencies**

```bash
git clone <repo-url>
cd schedulesync
bun install
```

2. **Configure environment**

```bash
cp .env.example .env
```

Fill in the required values:
- `DATABASE_URL` – PostgreSQL connection string
- `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` / `CLERK_SECRET_KEY` – Clerk auth keys
- `GOOGLE_GENERATIVE_AI_API_KEY` – For AI-powered schedule parsing
- `NEXT_PUBLIC_POSTHOG_KEY` – Analytics (optional)
- `SENTRY_AUTH_TOKEN` – Error tracking (optional)

3. **Start the database** (optional local setup)

```bash
./start-database.sh
```

4. **Run database migrations**

```bash
bun run db:push
```

5. **Start the dev server**

```bash
bun run dev
```

Open [http://localhost:3000](http://localhost:3000).

## Development

| Command | Description |
| ---------------------- | ------------------------------- |
| `bun run dev` | Start dev server with Turbopack |
| `bun run build` | Production build |
| `bun run lint` | Run ESLint |
| `bun run typecheck` | Type check with TypeScript |
| `bun run format:check` | Check code formatting |
| `bun run format:write` | Auto-format code |
| `bun run db:studio` | Open Drizzle Studio |
| `bun run db:generate` | Generate migration files |
| `bun run db:migrate` | Run migrations |

## Project Structure

```
src/
├── app/ # Next.js App Router pages and layouts
├── components/ # React components (UI, upload zone, FAQ)
├── server/
│ ├── api/ # tRPC routers
│ ├── db/ # Drizzle schema and database client
│ └── services/ # Business logic (AI parsing, calendar gen)
├── trpc/ # tRPC client and server setup
├── lib/ # Shared utilities
├── styles/ # Global CSS
├── middleware.ts # Clerk auth middleware
└── env.js # Environment variable validation
```