Skip to content

Commit 2b16aa0

Browse files
committed
Merge branch 'main' into landing-page
2 parents 8dddf39 + 00e465d commit 2b16aa0

File tree

105 files changed

+6510
-2840
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+6510
-2840
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
name: convex
1+
name: convex (prod)
22

33
on:
44
push:
55
branches:
6-
- main
6+
- prod
77
paths:
88
- "packages/server/**"
99

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: convex (staging)
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "packages/server/**"
9+
10+
jobs:
11+
deploy:
12+
runs-on: ubuntu-latest
13+
defaults:
14+
run:
15+
working-directory: ./packages/server
16+
environment: deploy-convex-staging
17+
env:
18+
DOPPLER_TOKEN: ${{ secrets.DOPPLER_TOKEN }}
19+
CONVEX_DEPLOY_KEY: ${{ secrets.CONVEX_DEPLOY_KEY }}
20+
21+
steps:
22+
- name: 💾 Checkout code
23+
uses: actions/checkout@v4
24+
25+
- name: 📦 Setup bun
26+
uses: oven-sh/setup-bun@v2
27+
28+
- name: 📦 Install dependencies
29+
run: bun install
30+
31+
- name: 🔑 Install Doppler CLI
32+
uses: dopplerhq/cli-action@v3
33+
34+
- name: 🔄 Sync environment variables to Convex
35+
run: |
36+
doppler secrets download --no-file --format env-no-quotes | \
37+
while IFS='=' read -r key value; do
38+
bunx convex env set "$key" "$value"
39+
done
40+
41+
- name: 🚀 Deploy Convex
42+
run: bunx convex deploy

.github/workflows/docs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: docs
33
on:
44
push:
55
branches:
6-
- main
6+
- prod
77
paths:
88
- "apps/docs/**"
99

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
name: web
1+
name: web (prod)
22

33
on:
44
push:
55
branches:
6-
- main
6+
- prod
77
paths:
88
- "apps/web/**"
99
- "packages/server/**"

.github/workflows/web-staging.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: web (staging)
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "apps/web/**"
9+
- "packages/server/**"
10+
11+
jobs:
12+
deploy:
13+
runs-on: ubuntu-latest
14+
environment: deploy-web-staging
15+
env:
16+
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
17+
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
18+
19+
steps:
20+
- name: 💾 Checkout code
21+
uses: actions/checkout@v4
22+
23+
- name: 📦 Setup bun
24+
uses: oven-sh/setup-bun@v2
25+
26+
- name: 📦 Install Vercel CLI
27+
run: bun add --global vercel@latest
28+
29+
- name: 🚀 Deploy Project to Vercel
30+
run: vercel deploy --prod --token=${{ secrets.VERCEL_TOKEN }}

.vercelignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
apps/chrome
1+
apps/browser
22
apps/scraper

AGENTS.md

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,19 @@
1-
# Development Guidelines for Albert Plus
1+
# Agent Development Guide
22

3-
## Build/Lint/Test Commands
3+
## Commands
44

5-
- **Build**: `bun run build` (builds all workspaces via turbo)
6-
- **Lint**: `bun run check` (runs Biome linter/formatter)
7-
- **Type check**: `bun run check:types` (type checks all workspaces)
8-
- **Test**: `bun run test` (runs all tests) or `bun test <file>` (single test)
9-
- **Test single file**: `cd apps/scraper && bun test src/modules/courses/index.test.ts`
10-
- **Test with pattern**: `bun test --test-name-pattern="<regex>"`
11-
- **Dev**: `bun run dev` (starts all dev servers with turbo)
5+
- **Lint/Format**: `bun check` (check) or `biome check --write` (fix)
6+
- **Type Check**: `bun check:types` (all) or `bun run --filter web check:types` (specific)
7+
- **Dev**: `bun dev` (starts all services with Turbo)
128

13-
## Code Style & Formatting
9+
## Code Style
1410

15-
- **Formatter**: Biome with 2-space indentation, double quotes for strings
16-
- **Imports**: Organize imports automatically (use `@/*` alias for apps/web src paths)
17-
- **Types**: Strict TypeScript enabled - use explicit types, avoid `any`
18-
- **Naming**: camelCase for variables/functions, PascalCase for components/types
19-
- **Error Handling**: Use `JobError` for scraper modules, return `null` for not found in queries
20-
21-
## Architecture Notes
22-
23-
- **Monorepo**: Turbo + Bun workspaces (`apps/*`, `packages/*`)
24-
- **Backend**: Convex (packages/server) for queries/mutations with Clerk auth
25-
- **Frontend**: Next.js 15 with App Router, Tailwind CSS v4, React 19
26-
- **Scraper**: Cloudflare Workers with Hono, Drizzle ORM for D1
27-
- **Testing**: Bun test runner with mocks in `__mocks__/` directories
11+
- **Package Manager**: Bun (v1.3.1+), use `bun install` not npm/yarn/pnpm
12+
- **Formatter**: Biome - 2 spaces, double quotes, organized imports
13+
- **TypeScript**: Strict mode, no implicit any, use explicit types for exports
14+
- **Imports**: Organize imports automatically via Biome, use `@/` for app imports, `workspace:*` for monorepo packages
15+
- **Naming**: camelCase for variables/functions, PascalCase for components/types, UPPER_SNAKE_CASE for constants
16+
- **Error Handling**: Use `ConvexError` for Convex functions, `JobError` for scraper jobs, typed errors preferred
17+
- **Async**: Use async/await, avoid callbacks, handle errors with try/catch or .catch()
18+
- **Components**: React 19 + Next.js 16, server components by default, use "use client" when needed
19+
- **Database**: Convex for main app, Drizzle ORM for scraper D1 database

README.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
<div align="center">
2323

2424
[![CI](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/ci.yaml/badge.svg)](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/ci.yaml)
25-
[![Web Deploy](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/web.yaml/badge.svg)](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/web.yaml)
25+
[![Web Deploy](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/web-prod.yaml/badge.svg)](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/web-prod.yaml)
2626
[![Docs Deploy](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/docs.yaml/badge.svg)](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/docs.yaml)
2727
[![Scraper Deploy](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/scraper.yaml/badge.svg)](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/scraper.yaml)
2828
[![Browser Extension Deploy](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/browser.yml/badge.svg)](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/browser.yml)
29-
[![Convex Deploy](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/convex.yaml/badge.svg)](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/convex.yaml)
29+
[![Convex Deploy](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/convex_prod.yaml/badge.svg)](https://github.com/TechAtNYU/AlbertPlus/actions/workflows/convex_prod.yaml)
3030

3131
</div>
3232

@@ -35,7 +35,6 @@
3535
## Table of Contents
3636

3737
- [About The Project](#about-the-project)
38-
- [Built With](#built-with)
3938
- [Deployed Sites](#deployed-sites)
4039
- [Getting Started](#getting-started)
4140
- [Contributing](#contributing)
@@ -45,13 +44,6 @@
4544

4645
AlbertPlus is a comprehensive, open-source platform designed to enhance the course registration experience for New York University (NYU) students. It provides a modern, intuitive interface and a suite of tools to help students plan their academic journey, build schedules, and navigate the complexities of course selection. The project is a monorepo that consists of a web application, a browser extension, a web scraper, and a documentation site, all powered by a Convex backend.
4746

48-
### Built With
49-
50-
This project is built with a modern and robust tech stack, including:
51-
52-
- **Core:** TypeScript, React 19, Next.js 15, Convex, Bun, Turborepo
53-
- **Specialized:** Plasmo, Cloudflare Workers, Hono, Drizzle ORM, Astro, Starlight, Clerk
54-
5547
For a full list of technologies, please refer to the [Tech Stack](https://docs.albertplus.com/getting-started/tech-stack/) documentation.
5648

5749
## Deployed Sites

apps/browser/biome.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"root": false,
3-
"$schema": "https://biomejs.dev/schemas/2.3.5/schema.json",
3+
"$schema": "https://biomejs.dev/schemas/2.3.8/schema.json",
44
"extends": "//",
55
"files": {
66
"includes": ["**", "!!build", "!src/components/ui", "!!.plasmo"]

apps/browser/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@
1111
"check:types": "tsc -noEmit"
1212
},
1313
"dependencies": {
14-
"@clerk/chrome-extension": "^2.8.0",
15-
"convex": "^1.29.0",
14+
"@clerk/chrome-extension": "^2.8.11",
15+
"convex": "^1.31.0",
1616
"plasmo": "0.90.5",
17-
"react": "19.2.0",
18-
"react-dom": "19.2.0",
17+
"react": "19.2.2",
18+
"react-dom": "19.2.2",
1919
"tailwindcss": "3.4.1"
2020
},
2121
"devDependencies": {
22-
"@types/chrome": "^0.1.28",
23-
"@types/node": "^24.10.1",
24-
"@types/react": "19.2.3",
22+
"@types/chrome": "^0.1.32",
23+
"@types/node": "^24.10.2",
24+
"@types/react": "19.2.7",
2525
"@types/react-dom": "19.2.3",
2626
"postcss": "8.5.6",
2727
"typescript": "5.9.3"

0 commit comments

Comments
 (0)