A mindful advent-style planning app that helps you design a calmer, more intentional holiday season. Using AI, it creates a personalised 25-day advent plan (December 1-25) based on your wishes and preferences.
- Personalised Planning: Share your Christmas wish and answer 5 thoughtful questions to receive a tailored 25-day advent plan
- AI-Powered: Uses OpenAI's Agents SDK to generate adaptive questions and meaningful daily activities
- Mindful Design: Focus on low-stress, low-consumerism activities like journaling, nature walks, simple recipes, and connection
- Beautiful UI: Warm, minimal design with gentle animations and a calming colour palette
- Advent Calendar View: Interactive 25-day advent calendar (Dec 1-25) with detailed activity descriptions and inspirational quotes
- Next.js 16 with App Router
- React 19
- TypeScript 5
- Tailwind CSS 4 with custom theme
- Google Fonts — Playfair Display (serif) & DM Sans (sans-serif)
- Drizzle ORM — type-safe SQL ORM
- Turso (LibSQL) — production edge database
- SQLite — local development
- OpenAI Agents SDK — agentic framework for adaptive question generation and plan creation (GPT-5.1)
- Zod 4 — schema validation for AI structured outputs
- nanoid — unique ID generation
- EmailJS — client-side email capture
- ZenQuotes.io — inspirational quotes API
- Node.js 20+
- An OpenAI API key
- Clone the repository
git clone <repository-url>- Install dependencies
npm install- Set up environment variables
Create a .env.local file in the root directory:
OPENAI_API_KEY=your_openai_api_key_here- Set up the database
npx drizzle-kit push- Run the development server
npm run dev- Open the app
Visit http://localhost:3000 in your browser.
├── app/
│ ├── api/ # API routes
│ │ ├── session/ # Create new session
│ │ ├── questions/ # Question generation & answers
│ │ ├── plan/ # Plan generation
│ │ └── email/ # Email capture
│ ├── wish/ # Initial wish page
│ ├── questions/[sessionId]/ # Adaptive question flow
│ ├── plan/[sessionId]/ # Advent calendar view
│ ├── layout.tsx # Root layout
│ └── page.tsx # Landing page
├── components/
│ └── ui/ # Reusable UI components
├── lib/
│ ├── db/ # Drizzle schema & connection
│ ├── agents.ts # OpenAI agents configuration
│ ├── quotes.ts # ZenQuotes.io integration
│ └── utils.ts # Utility functions
└── drizzle.config.ts # Drizzle configuration
The app embodies a mindful, warm, minimal Christmas aesthetic:
- Colour Palette: Soft cream background, muted forest green, warm terracotta accents
- Typography: Playfair Display (serif) for headings, DM Sans for body text
- Animations: Gentle fade-ins and hover states
- Tone: Calm, encouraging, non-judgmental
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint- Landing Page: User is welcomed and clicks "Begin"
- Wish Page: User shares what they want from this holiday season
- Questions Flow: AI generates 5 adaptive follow-up questions based on the user's wish and previous answers
- Plan Generation: AI creates a 25-day advent plan (December 1-25) with daily activities, drawing inspiration from wellness quotes
- Plan View: User can browse their personalised calendar and optionally save their email for future features
- Daily email reminders with activities
- Progress tracking and completion stats
- Sharing plans with friends and family
- Alternative plan themes (New Year, general wellness)
MIT
Made with care for a calmer holiday season 🕯️