Skip to content

Hyperaide/Growdoro

Repository files navigation

🌱 Growdoro

Next.js TypeScript InstantDB License

A beautiful, gamified productivity app where focus sessions grow your digital garden

DemoDocumentationContributingReport Bug


✨ Features

  • 🎮 Isometric Garden View - Beautiful 3D isometric garden that grows as you complete focus sessions
  • ⏱️ Focus Timer - Pomodoro-style focus sessions to boost productivity
  • 🌻 Plant Collection - Unlock and collect various plants by completing sessions
  • 👤 User Profiles - Create your unique garden space with custom username
  • 💳 Premium Features - Support the project with optional premium subscription
  • 🔐 Secure Authentication - Google OAuth integration for easy sign-in
  • 📊 Progress Tracking - Track your focus sessions and garden growth over time

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn
  • An InstantDB account
  • Google OAuth credentials (for authentication)
  • Stripe account (optional, for payment features)

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/growdoro.git
    cd growdoro
  2. Install dependencies

    npm install
    # or
    yarn install
  3. Set up environment variables

    Create a .env.local file in the root directory:

    # InstantDB Configuration
    NEXT_PUBLIC_INSTANT_APP_ID=your_instant_app_id
    INSTANT_ADMIN_TOKEN=your_instant_admin_token
    
    # Google OAuth
    NEXT_PUBLIC_GOOGLE_CLIENT_ID=your_google_client_id
    NEXT_PUBLIC_GOOGLE_CLIENT_NAME=your_app_name
    
    # Stripe (Optional)
    STRIPE_SECRET_KEY=your_stripe_secret_key
    STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret
    NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
    
    
    # Application URL
    NEXT_PUBLIC_APP_URL=http://localhost:3000
  4. Set up InstantDB schema

    npx instant-cli push
  5. Run the development server

    npm run dev
    # or
    yarn dev
  6. Open your browser

    Navigate to http://localhost:3000

📦 Tech Stack

📁 Project Structure

growdoro/
├── app/                      # Next.js app directory
│   ├── (public)/            # Public user profiles
│   ├── api/                 # API routes
│   ├── components/          # React components
│   ├── contexts/            # React contexts
│   └── constants/           # App constants
├── lib/                     # Utility functions
├── public/                  # Static assets
│   ├── blocks/             # Block textures
│   └── plants/             # Plant images
├── instant.schema.ts        # InstantDB schema
└── instant.perms.ts        # InstantDB permissions

🛠️ Development

Available Scripts

npm run dev          # Start development server with Turbopack
npm run build        # Build for production
npm run start        # Start production server
npm run lint         # Run ESLint

Key Components

  • IsometricGarden - Main garden view component
  • AuthButton - Authentication flow handler
  • ProfileCreationModal - New user onboarding
  • BlockSlideover - Plant selection interface
  • MainSlideover - Session timer and controls

Database Schema

The app uses InstantDB with the following main entities:

  • profiles - User profiles with usernames
  • blocks - Garden blocks and plants
  • sessions - Focus session records
  • $users - InstantDB user accounts

🤝 Contributing

We love contributions! Please see our Contributing Guide for details on:

  • Development process
  • How to submit pull requests
  • Coding standards
  • Testing guidelines

Quick Contribution Guide

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

🐛 Bug Reports & Feature Requests

Found a bug or have a feature idea? Please check if it's already been reported in our issues, then feel free to create a new issue with:

  • Bug Reports: Clear description, steps to reproduce, expected vs actual behavior
  • Feature Requests: Clear description, use case, potential implementation ideas

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Plant artwork and sprites from [source]
  • Isometric engine inspiration from [source]
  • Community contributors and supporters

💬 Community & Support

🚧 Roadmap

  • Farm-type plants (strawberries, tomatoes, etc.)

Made with 💚 by Hyperaide Labs

About

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published