Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
26d4e08
feat: Add basic purchase page for accessible escape room with form ha…
racecn Jul 31, 2025
863eb85
feat: Implement Stripe API integration for session status and webhook…
racecn Aug 21, 2025
08b3b2f
fix: Correct storage directory path for purchase data
racecn Sep 3, 2025
67879ad
feat: Return only non-sensitive fields in session status response
racecn Sep 3, 2025
606cef9
Enhance debugging
racecn Sep 3, 2025
eba9ab0
Implement save purchase data API and local development instructions
racecn Sep 3, 2025
e698c3b
Remove deprecated Azure checkout session and purchase data handling f…
racecn Sep 11, 2025
5f16546
Add comprehensive tests for API endpoints and setup configuration
racecn Sep 11, 2025
2956cab
Merge remote-tracking branch 'origin/main' into nathan/escape-room-su…
racecn Oct 9, 2025
f6d14d6
Remove merge conflict marker in icon list
racecn Oct 9, 2025
091ec9c
Set output option to 'server' in Astro configuration
racecn Oct 9, 2025
a5a92ef
Rework session mocking in tests and add access control middleware tests
racecn Oct 16, 2025
883f5c3
Change session handling to use session-store module in download mater…
racecn Oct 16, 2025
22c03cf
Add session handling to middleware and update type definitions
racecn Oct 16, 2025
cc3bfae
Change data extraction in escape room theme page and enable prerendering
racecn Oct 16, 2025
0a16d16
Rework escape room access and content handling
racecn Oct 16, 2025
298c779
Remove unnecessary createdAt field from PurchaseSession interface and…
racecn Oct 30, 2025
6e23141
Merge branch 'main' into nathan/escape-room-subsite-ordering
racecn Nov 6, 2025
963db3a
Refactor robots.txt rules into astro config
racecn Nov 14, 2025
e4c9bd3
Update sitemap filter to exclude newer escape room content path
racecn Nov 14, 2025
e7f1658
Remove kitType from API and UI, update pricing logic, and adjust conf…
racecn Nov 14, 2025
b796c28
Fix theme mapping for baking kit in checkout session
racecn Nov 14, 2025
2b83cf1
Update theme selection to dynamically render options from escape room…
racecn Nov 14, 2025
80480c2
Componentize FooterER to simplify EscapeRoomLayout
racecn Nov 14, 2025
8c493a2
Add hideSiteHeader prop to Layout for conditional header rendering
racecn Nov 14, 2025
7864588
Add escape room dynamic theme rendering
racecn Nov 20, 2025
95fe042
Make email confirmation functionality as function and store purchase …
racecn Nov 20, 2025
107cd91
Refactor Stripe webhook to use dedicated email and purchase storage f…
racecn Nov 20, 2025
1504fad
Merge branch 'main' into nathan/escape-room-subsite-ordering
brian-montgomery Feb 12, 2026
80f9b96
Initial setup with Drizzle and Postgres
brian-montgomery Feb 12, 2026
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
26 changes: 25 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,25 @@
.DS_Store
# System files
.DS_Store

# Node.js dependencies
node_modules/

# Astro build outputs
dist/
.astro/

# Environment variables
.env

# Local development files
local-dev/purchases/
local-dev/emails/
local-dev/uploads/

# Protected materials
astro/src/protected-materials/

# Test files and debug content
**/test*.astro
**/debug*.astro
**/*-test.*
20 changes: 18 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ up:
@docker compose up --detach

down:
@docker compose down
@docker compose --profile "*" down

shell: up
@docker compose exec $(CONTAINER) bash
Expand Down Expand Up @@ -50,6 +50,17 @@ update-dependencies: up
build:
@docker compose build

serve-tools:
@docker compose --profile tools up --detach
@echo Running Adminer at http://localhost:8080/

db-push:
@docker compose exec ${CONTAINER} sh -c "npx drizzle-kit push"

db-migrate:
@docker compose exec ${CONTAINER} sh -c "npx drizzle-kit generate"
@docker compose exec ${CONTAINER} sh -c "npx drizzle-kit migrate"

$(SOURCE_DIR)/node_modules:
@echo Installing JS dependencies. This will take awhile.
docker compose exec $(CONTAINER) sh -c "npm install"
Expand All @@ -63,6 +74,10 @@ clean-astro-content:
@$(RemoveDirCmd) $(call FixPath,$(SOURCE_DIR)/.astro)
@$(RemoveDirCmd) $(call FixPath,$(SOURCE_DIR)/node_modules/.astro-og-canvas)

clean-db:
@echo Removing database volume
@docker volume rm website_pg_data

clean-js-dist:
@echo Removing the $(SOURCE_DIR)/dist directory.
@$(RemoveDirCmd) $(call FixPath,$(SOURCE_DIR)/dist)
Expand All @@ -74,5 +89,6 @@ clean-js-modules:
clean: clean-js-dist clean-js-modules

.PHONY: serve up down build shell dist version \
clean clean-astro-content clean-js-dist clean-js-modules \
prettier serve-tools upgrade-astro update-dependencies \
clean clean-astro-content clean-db clean-js-dist clean-js-modules \
.FORCE
40 changes: 30 additions & 10 deletions astro/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defineConfig } from "astro/config";
import { defineConfig, envField } from "astro/config";
import styleGuide from "./style-guide/register.js";

import icon from "astro-icon";
Expand Down Expand Up @@ -26,6 +26,7 @@ const botsToDisallow = [

export default defineConfig({
site: "https://accessiblecommunity.org",
output: 'server',
adapter: netlify(),

server: {
Expand All @@ -48,6 +49,12 @@ export default defineConfig({
},
},

env: {
schema: {
DATABASE_URL: envField.string({ context: "server", access: "secret", optional: false }),
}
},

integrations: [
mdx(),
styleGuide(),
Expand All @@ -56,12 +63,15 @@ export default defineConfig({
// Bootstrap Icons
bi: [
// Navigation
'arrow-down-square', 'arrow-up-right-square', 'list',
'arrow-down-square', 'arrow-up-right-square', 'arrow-right-square', 'list',
// Contact Info
'envelope-at-fill', 'telephone-fill', 'geo-alt-fill',
// Social Media
'facebook', 'instagram', 'linkedin', 'rss-fill', 'tiktok', 'globe', 'mastodon', 'twitter',
// Descriptive
'gift-fill', 'pencil-fill', 'people-fill', 'person-fill',
// Additional icons
'check-circle-fill', 'exclamation-triangle-fill', 'file-text-fill', 'display-fill', 'puzzle-fill', 'tools',
'gift-fill', 'pencil-fill', 'people-fill', 'person-fill', 'puzzle-fill', 'stopwatch-fill', 'tools',
],
// CoreUI Brands
Expand All @@ -80,24 +90,34 @@ export default defineConfig({
}
}),
sitemap({
filter: (page) => {
return !page.endsWith('/commitment-form/') && !page.endsWith('fixable/') && !page.endsWith('tips/archive/');
},
filter: (page) =>
!page.endsWith('/commitment-form/') &&
!page.includes('/fixable/') &&
!page.includes('/services/escape-room/content/') &&
!page.endsWith('tips/archive/')
}),
robotsTxt({
sitemap: true,
policy: [
// Block specified bots entirely
...botsToDisallow.map((userAgent) => ({
userAgent,
disallow: ['/'],
})),
// General user-agent rules
{
userAgent: '*',
disallow: ['/fixable/', '/tips/archive/'],
},
{
userAgent: '*',
allow: ['/'],
allow: ['/', '/materials/basic/'],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interesting, do we have to explicitly allow /materials/basic even though we don't disallow it below?

disallow: [
'/fixable/',
'/materials/premium/',
'/protected-materials/',
'/api/download-material',
'/api/digital-content',
'/api/verify-purchase',
'/services/escape-room/content/',
'/tips/archive/',
],
},
]
})
Expand Down
11 changes: 11 additions & 0 deletions astro/drizzle.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'dotenv/config';
import { defineConfig } from 'drizzle-kit';

export default defineConfig({
out: './drizzle',
schema: './src/db/schema.ts',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
});
Loading
Loading