The loudest event feed in the North. Discover events, lifestyle, and unique experiences in Chiang Mai, Thailand.
| Feature | Description |
|---|---|
| ποΈ Event Discovery | Browse events by month, category, or search |
| πΊοΈ Interactive Map | Leaflet-based map with custom Neo-Brutalist markers |
| π¨ Neo-Brutalist Design | Bold, modern UI with striking colors and shadows |
| π± Fully Responsive | Mobile-first design that works on all devices |
| π SEO Optimized | Server Components, dynamic metadata, sitemap, robots.txt |
| βΏ Accessible | ARIA labels, keyboard navigation support |
| β‘ Fast | React Query caching, infinite scroll, optimized images |
CM-EVENTS/
βββ frontend/ # Next.js 16 App (React 19)
β βββ app/ # App Router pages
β βββ components/ # Reusable UI components
β βββ hooks/ # React Query hooks
β βββ lib/ # Utilities, types, API client
β βββ public/ # Static assets
β
βββ backend/ # Express.js API
β βββ src/
β β βββ controllers/ # API handlers
β β βββ services/ # Business logic + Scraper
β β βββ routes/ # Route definitions
β β βββ config/ # Database config
β β βββ utils/ # Helpers
β βββ api/ # Legacy entry point
β
βββ docs/ # Documentation
β βββ API.md # API endpoints
β βββ ARCHITECTURE.md # System architecture
β βββ DEVELOPMENT.md # Development guide
β βββ DEPLOYMENT.md # Deployment instructions
β βββ ENV.md # Environment variables
β
βββ design/ # Design assets & mockups
- Framework: Next.js 16 (App Router, React 19)
- Styling: Tailwind CSS 4
- State: React Query (TanStack Query)
- Maps: Leaflet + react-leaflet
- Icons: Lucide React
- Language: TypeScript 5
- Runtime: Node.js + tsx
- Framework: Express.js 5
- Database: PostgreSQL (Railway)
- Scraper: Cheerio + Axios
- AI: Google Generative AI (for content extraction)
- Platform: Railway
- Build: Docker (standalone Next.js output)
- Node.js 20+
- pnpm (recommended)
- PostgreSQL database
For detailed setup instructions, see Development Guide.
cd frontend
# Install dependencies
pnpm install
# Set environment variables
echo "NEXT_PUBLIC_API_URL=http://localhost:8000" > .env.local
# Run development server
pnpm dev
# Build for production
pnpm build
# Deploy to Railway
pnpm deploycd backend
# Install dependencies
pnpm install
# Set environment variables
cp .env.example .env
# Edit .env with your database credentials
# See [ENV.md](docs/ENV.md) for all variables
# Run development server
pnpm dev
# Deploy to Railway
pnpm deployFor complete API documentation, see API.md.
| Method | Endpoint | Description |
|---|---|---|
| GET | /events |
List events (with pagination, filters) |
| GET | /events/:id |
Get event by ID with images |
| GET | /months |
Get available months |
| GET | /categories |
Get event categories |
| GET | /stats |
Get event statistics |
| GET | /search?q= |
Search events |
| GET | /upcoming |
Get upcoming events |
| GET | /map |
Get events with GPS coordinates |
| GET | /scrape/status |
Scraper status |
| Color | Hex | Usage |
|---|---|---|
| Neo Lime | #ccff00 |
Primary accents, CTAs |
| Neo Pink | #ff00ff |
Highlights, badges |
| Neo Purple | #9d00ff |
Secondary accents |
| Neo Black | #000000 |
Text, borders |
| Neo White | #ffffff |
Backgrounds |
- Display: Outfit (headings)
- Sans: Kanit (body text, Thai support)
- Mono: JetBrains Mono (code, labels)
| File | Description |
|---|---|
frontend/app/layout.tsx |
Root layout with SEO metadata |
frontend/components/error-boundary.tsx |
Error handling component |
frontend/lib/api.ts |
API client functions |
frontend/hooks/use-events.ts |
React Query hooks |
backend/src/app.ts |
Express app setup |
backend/src/services/scraper.service.ts |
Event scraper |
pnpm dev # Start development server
pnpm build # Build for production
pnpm start # Start production server
pnpm lint # Run ESLint
pnpm deploy # Deploy to Railwaypnpm dev # Start with hot reload
pnpm start # Start production server
pnpm deploy # Deploy to RailwayFor detailed deployment instructions, see Deployment Guide.
Both frontend and backend are configured for Railway deployment:
# Frontend
cd frontend && railway up
# Backend
cd backend && railway upDocker files are included for containerized deployment.
| Document | Description |
|---|---|
| API Documentation | Complete API reference with all endpoints |
| Architecture | System architecture, tech stack, data flow |
| Development Guide | Setup, workflow, best practices |
| Deployment Guide | Railway, Vercel, AWS deployment |
| Environment Variables | All required and optional env vars |
MIT Β© 2025 Hype CNX Team
- Event data sourced from CMHY.city
- Icons by Lucide
- Maps by OpenStreetMap