WIP! A BB-style forum, on the ATmosphere!
We're still working... we'll be back soon when we have something to show off!
node
typescript
hono
htmx
atproto
1name: CI
2
3# Run checks on pull requests to verify code quality before merge.
4# Jobs run in parallel for fast feedback. Any failing check blocks the PR.
5on:
6 pull_request:
7 types: [opened, synchronize, reopened]
8 workflow_call:
9
10jobs:
11 # Lint job: Check code quality with oxlint
12 lint:
13 name: Lint
14 runs-on: ubuntu-latest
15 steps:
16 - name: Checkout code
17 uses: actions/checkout@v4
18
19 - name: Setup pnpm
20 uses: pnpm/action-setup@v4
21 with:
22 version: 9.15.4
23
24 - name: Setup Node.js
25 uses: actions/setup-node@v4
26 with:
27 node-version: '22'
28 cache: 'pnpm'
29
30 - name: Install dependencies
31 run: pnpm install --frozen-lockfile
32
33 - name: Run oxlint
34 run: pnpm exec oxlint .
35
36 # Typecheck job: Verify TypeScript types
37 typecheck:
38 name: Type Check
39 runs-on: ubuntu-latest
40 steps:
41 - name: Checkout code
42 uses: actions/checkout@v4
43
44 - name: Setup pnpm
45 uses: pnpm/action-setup@v4
46 with:
47 version: 9.15.4
48
49 - name: Setup Node.js
50 uses: actions/setup-node@v4
51 with:
52 node-version: '22'
53 cache: 'pnpm'
54
55 - name: Install dependencies
56 run: pnpm install --frozen-lockfile
57
58 - name: Run type check
59 run: pnpm turbo lint
60
61 # Test job: Run unit and integration tests
62 # Requires PostgreSQL service for database tests
63 test:
64 name: Test
65 runs-on: ubuntu-latest
66
67 services:
68 postgres:
69 image: postgres:17
70 env:
71 POSTGRES_USER: atbb
72 POSTGRES_PASSWORD: atbb
73 POSTGRES_DB: atbb
74 options: >-
75 --health-cmd pg_isready
76 --health-interval 10s
77 --health-timeout 5s
78 --health-retries 5
79 ports:
80 - 5432:5432
81
82 steps:
83 - name: Checkout code
84 uses: actions/checkout@v4
85
86 - name: Setup pnpm
87 uses: pnpm/action-setup@v4
88 with:
89 version: 9.15.4
90
91 - name: Setup Node.js
92 uses: actions/setup-node@v4
93 with:
94 node-version: '22'
95 cache: 'pnpm'
96
97 - name: Install dependencies
98 run: pnpm install --frozen-lockfile
99
100 - name: Build packages
101 run: pnpm build
102
103 - name: Run database migrations
104 run: pnpm --filter @atbb/appview db:migrate
105 env:
106 DATABASE_URL: postgresql://atbb:atbb@localhost:5432/atbb
107
108 - name: Run tests
109 run: pnpm test
110 env:
111 DATABASE_URL: postgresql://atbb:atbb@localhost:5432/atbb
112
113 # Build job: Verify TypeScript compilation succeeds
114 # Runs in parallel with other checks to catch build errors early
115 build:
116 name: Build
117 runs-on: ubuntu-latest
118 steps:
119 - name: Checkout code
120 uses: actions/checkout@v4
121
122 - name: Setup pnpm
123 uses: pnpm/action-setup@v4
124 with:
125 version: 9.15.4
126
127 - name: Setup Node.js
128 uses: actions/setup-node@v4
129 with:
130 node-version: '22'
131 cache: 'pnpm'
132
133 - name: Install dependencies
134 run: pnpm install --frozen-lockfile
135
136 - name: Build all packages
137 run: pnpm build