Skip to content

aleksey-cherenkov/pushok

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

108 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Pushok 🐱

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.


🌟 Why Pushok?

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

✨ Core Features

🌿 Gentle Habit Tracking

  • 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

🎯 Aspirations (Long-term Meaningful Pursuits)

  • 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

πŸ’ͺ Resistance Tracking

  • "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

πŸ“Š Progress Visualization (Not Guilt Metrics)

  • 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

πŸ”„ Event Sourcing Architecture

  • 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

🌿 Mindful Design (Like Stela)

  • 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

πŸ› οΈ Technology Stack

  • 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

Why Event Sourcing?

  • 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

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and npm
  • Modern browser (Chrome, Edge, Firefox, Safari)

Installation

# Clone the repository
git clone https://github.com/aleksey-cherenkov/pushok.git
cd pushok

# Install dependencies
npm install

# Run development server
npm run dev

Open http://localhost:3000 in your browser.

Build for Production

npm run build
npm start

πŸ“ Project Structure

pushok/
β”œβ”€β”€ 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

🎯 Event Model Overview

Pushok uses Event Sourcing - all state changes are stored as immutable events in an append-only log.

Key Aggregates

  • 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)

Sample Events

HabitCreated β†’ AspirationCreated β†’ HabitUpdated(linkedAspirationId) β†’ 
ActivityLogged(overcameResistance: true) β†’ MilestoneReached(50 sessions)

See ARCHITECTURE.md for detailed event model.


🌐 Deployment

Azure Static Web Apps

Resource Details:

  • Resource Group: rg-pushok
  • Static Web App: pushok-app
  • Plan: Free tier
  • Domain: pushok.life
  • Output Location: .next (SSR mode)

Deployment Steps:

  1. Create Azure Static Web App (see DEPLOYMENT.md)
  2. Connect GitHub repository
  3. Configure build settings (auto-configured)
  4. Push to main branch - auto-deploys via GitHub Actions

Environment Variables

AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_KEY=your-api-key
AZURE_OPENAI_DEPLOYMENT=gpt-5-nano

Detailed deployment guide: See DEPLOYMENT.md


πŸ§ͺ Development Workflow

GitHub Copilot Configuration

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

GitHub Copilot CLI Integration

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

Testing Philosophy

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

Scripts

npm run dev          # Development server (Turbopack)
npm run build        # Production build
npm run lint         # ESLint
npm run type-check   # TypeScript check

πŸ—ΊοΈ Roadmap

Phase 1: Foundation βœ… COMPLETE

  • 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

Phase 2: Core Features βœ… COMPLETE

  • 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

Phase 3: Progress & Motivation βœ… COMPLETE

  • 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

Phase 4: Polish & Submit (Final)

  • Documentation updates
  • Demo video for challenge submission

Phase 5: Future (Post-Challenge)

  • 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

🀝 Contributing

This is a personal project built for the GitHub Copilot CLI challenge, but suggestions and feedback are welcome!


πŸ“ License

MIT License - See LICENSE for details


πŸ’­ Dedication

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.


πŸ”— Links


Built with ❀️ using GitHub Copilot CLI | Deployed on Azure Static Web Apps

About

Way Finder - Find your way to what matters. AI-powered goals, photo timeline. In memory of Stela 🐱. Built with GitHub Copilot CLI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors