Way Finder - In Memory of Stela
"The best time to plant a tree was 20 years ago. The second best time is now."
Pushok is a way finder for meaningful living - helping you discover and navigate toward what truly matters: relationships, nature, self-improvement, and living with intention.
Built with GitHub Copilot CLI for the Build with GitHub Copilot challenge.
We spend hours chasing virtual rewards in games while neglecting the real rewards in life - time with loved ones, moments in nature, personal growth, and meaningful connections. Pushok - your way finder (named after our beloved cat Stela) - helps you nurture good habits with:
- No Guilt: Miss a day? No problem. No broken streaks, no pressure.
- Aggregation: "You walked 18 times this month!" - celebrate wins!
- Gentle Nudging: Daily reminders without stress or FOMO
- Meaningful Reflection: Weekly/monthly views show progress over time
- Remove Procrastination: Quick 2-second check-ins make logging easy
What matters:
- Connect: Talk to parents, spend time with kids and pets
- Experience: Walk in nature, watch birds, be present
- Grow: Self-improvement, healthy habits, creativity
- Reflect: Celebrate progress without productivity pressure
- Create habits you want to nurture (daily walks, time with family, etc.)
- AI assistance: "remind me to plank 60 sec daily" β configured habit
- Quick check-ins: "β Did it today" (2 seconds, no friction)
- Multiple sessions per day: "3 sessions β’ 75 pushups total"
- Edit habits: Update goals, link to aspirations
- Aggregated reflections: "18 walks this month" - feel good!
- NO STREAKS: Missing a day doesn't break anything
- AI-assisted creation: "Get stronger for hiking" β no deadlines, just direction
- Link habits to aspirations: See how daily actions connect to what matters
- Aggregated progress: "18 plank sessions toward hiking goal"
- Track across multiple habits: One aspiration, many supporting habits
- "Logged even when I didn't feel like it" checkbox
- Celebrate victories: "Overcame Resistance 12 times πͺ"
- Inspired by Steven Pressfield's "The War of Art"
- Combat perfectionism, self-doubt, procrastination
- Milestone badges: 10 β 50 β 100 β 500 β 1000 sessions
- Monthly comparison: "This month: 18 sessions (+50% vs last month)"
- Growth percentages and total value aggregation
- Focus on what you did accomplish, not what you missed
- Individual habit progress + aspiration-level summaries
- Complete audit trail of your journey
- Time-travel through your progress at any point
- Rich analytics and pattern insights
- Foundation for future mobile app with offline-first sync
- No unit tests needed - events are the source of truth
- Calming interface with nature imagery
- Daily digest instead of constant notifications
- "Stela would be proud" style encouragement
- No guilt-tripping, no FOMO, no artificial urgency
- Framework: Next.js 16 (App Router, React Server Components, Turbopack)
- Database: IndexedDB (Dexie.js) - local-first, single-user, ~50 photos capacity
- AI: Azure OpenAI (GPT-5-nano with prompt caching)
- State: Zustand with event sourcing
- UI: Tailwind CSS + shadcn/ui
- Hosting: Azure Static Web Apps
- CI/CD: GitHub Actions
- Budget: $1-5/month for AI + hosting
- Complete History: Every habit change, activity logged as immutable facts
- Time Travel: Replay events to see patterns at any point in time
- Flexible Views: Multiple projections from same data
- Future-Proof: Perfect foundation for mobile sync
- Simple Development: Delete IndexedDB and restart fresh during development
- Node.js 18+ and npm
- Modern browser (Chrome, Edge, Firefox, Safari)
# Clone the repository
git clone https://github.com/aleksey-cherenkov/pushok.git
cd pushok
# Install dependencies
npm install
# Run development server
npm run devOpen http://localhost:3000 in your browser.
npm run build
npm startpushok/
βββ app/ # Next.js App Router
β βββ habits/ # Habit management
β βββ api/ # API routes (future)
β βββ page.tsx # Homepage
βββ lib/ # Core business logic
β βββ events/ # Event sourcing (types, store, aggregate)
β βββ aggregates/ # Domain aggregates (Habit)
β βββ ai/ # AI integration helpers (future)
βββ components/ # React components
β βββ ui/ # shadcn/ui components
β βββ habits/ # Habit-specific components
βββ hooks/ # Custom React hooks
Pushok uses Event Sourcing - all state changes are stored as immutable events in an append-only log.
- Habit: Activities you want to nurture (walks, planks, reading, etc.)
- Activity: Logged check-ins with values, mood, notes, resistance tracking
- Aspiration: Long-term meaningful pursuits (no deadlines, just direction)
- Photo: Photos with phases (future)
- Reminder: Gentle scheduled reminders (future)
HabitCreated β AspirationCreated β HabitUpdated(linkedAspirationId) β
ActivityLogged(overcameResistance: true) β MilestoneReached(50 sessions)See ARCHITECTURE.md for detailed event model.
Resource Details:
- Resource Group:
rg-pushok - Static Web App:
pushok-app - Plan: Free tier
- Domain: pushok.life
- Output Location:
.next(SSR mode)
Deployment Steps:
- Create Azure Static Web App (see DEPLOYMENT.md)
- Connect GitHub repository
- Configure build settings (auto-configured)
- Push to main branch - auto-deploys via GitHub Actions
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_KEY=your-api-key
AZURE_OPENAI_DEPLOYMENT=gpt-5-nanoDetailed deployment guide: See DEPLOYMENT.md
This project includes custom Copilot instructions for consistent, high-quality code:
.github/
βββ copilot-instructions.md # Project context, coding standards, patterns
.vscode/
βββ settings.json # Copilot & editor settings
βββ extensions.json # Recommended extensions
Copilot instructions include:
- Project architecture (event sourcing, CQRS patterns)
- Coding standards (TypeScript strict, naming conventions)
- Documentation references (README, ARCHITECTURE, PROJECT, GETTING_STARTED)
- Guidelines for keeping documentation updated
This project showcases GitHub Copilot CLI throughout development:
- Scaffolding: Generated project structure with Copilot CLI
- Event Store: Built IndexedDB wrapper with AI assistance
- Components: Rapid UI development with Copilot suggestions
- Documentation: This README and architecture docs
- Problem Solving: Debug assistance and code explanations
Event sourcing with proper design doesn't need extensive unit tests:
- Events are immutable facts - if stored correctly, the system is correct
- Manual verification through the UI during development
- Delete IndexedDB and restart fresh when schemas change
npm run dev # Development server (Turbopack)
npm run build # Production build
npm run lint # ESLint
npm run type-check # TypeScript check- Project setup with Next.js 16
- Project documentation
- Azure Static Web Apps deployment
- Custom domain (pushok.life) with SSL
- GitHub Actions CI/CD pipeline
- shadcn/ui components
- Homepage with Stela's memorial π
- Event store implementation
- Core habit management UI
π Live at https://pushok.life
- Activity logging with multiple logs per day β
- AI habit creation with GPT-5-nano β
- Metric tracking (count, duration, distance) β
- Today's Focus dashboard β
- Navigation bar β
- About page with Stela's story β
Phase 4 Additions (Complete):
- π― Aspirations System: AI-assisted long-term meaningful pursuits
- π Habit-Aspiration Linking: See how daily actions connect to what matters
- πͺ Resistance Tracking: Celebrate overcoming perfectionism, self-doubt, procrastination
- π Milestone Badges: 10 β 50 β 100 β 500 β 1000 sessions
- π Progress Visualization: Monthly comparison, growth %, total value aggregation
- βοΈ Edit Habits: Update goals and aspiration links
- π Aspiration Progress: Aggregated view across all linked habits
Earlier features:
- π€ AI-Assisted Creation: Natural language β habits + aspirations
- π Flexible Metrics: checkmark, count (reps/steps), duration (sec/min/hr), distance (mi/km)
- β Enhanced Activity Logging: Multiple sessions per day with value tracking
- ποΈ Today's Focus: Daily dashboard with expandable log timelines
- π§ Navigation: Home | Today | Habits | Aspirations | About
- Long-term aspirations with AI assistance
- Link habits to aspirations
- Progress visualization (combat futility)
- Resistance tracking (inspired by "The War of Art")
- Weekly/monthly aggregations with growth percentages
- Milestone celebrations (10β50β100β500β1000)
- Habit edit functionality
- Aspiration detail page with comprehensive progress
- Documentation updates
- Demo video for challenge submission
- Flutter mobile app (where photos really shine)
- Native notifications (proper gentle reminders)
- Cloud sync (Azure Functions + SignalR)
- Camera integration
- Private repo with public mobile app
This is a personal project built for the GitHub Copilot CLI challenge, but suggestions and feedback are welcome!
MIT License - See LICENSE for details
In memory of Stela (Pushok) π± Who taught us that the best moments in life are simple: sunshine, nature, birds and squirrels, presence, and love.
This app is a journal for meaningful living - gentle like Stela, reminding us to focus on what truly matters.
- Live Demo: https://pushok.life β (deployed!)
- Documentation: ARCHITECTURE.md | DEPLOYMENT.md
- GitHub Copilot CLI: Learn more
- Next.js 16: Documentation
Built with β€οΈ using GitHub Copilot CLI | Deployed on Azure Static Web Apps