Poro is a web application that combines the Pomodoro Technique and a Kanban board with gamification elements to make your work or study sessions more productive and engaging. Track your tasks, complete Pomodoro sessions, and level up as you maintain your focus streak.
- Task Management: Create, manage, and track your tasks.
- Pomodoro Timer: A classic Pomodoro timer to help you focus.
- Gamification:
- XP and Levels: Gain experience points (XP) for completing Pomodoro sessions and level up.
- Streaks: Maintain a daily streak of completed sessions.
- Streak Freezes: Earn streak freezes to protect your streak on missed days.
- User Authentication: Secure user authentication using Supabase.
- Friends System: Add friends and see their daily progress.
- Framework: Next.js
- Styling: Tailwind CSS
- Backend: Supabase
- Language: TypeScript
To get a local copy up and running, follow these simple steps.
- Node.js (v20 or later)
- npm
- Supabase CLI
-
Clone the repo
git clone https://github.com/your_username/poro.git cd poro -
Install NPM packages
npm install
-
Set up Supabase
-
Start Supabase services This will start the Supabase containers.
npx supabase start
-
Get your Supabase keys You'll need the
API URLand theanon keyfrom the output of thesupabase startcommand.
-
-
Set up environment variables
- Create a
.env.localfile in the root of your project.touch .env.local
- Add your Supabase URL and anon key to the
.env.localfile:NEXT_PUBLIC_SUPABASE_URL=YOUR_SUPABASE_URL NEXT_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
- Create a
-
Apply database migrations
This will set up the necessary tables and functions in your local Supabase database.
npx supabase db reset
-
Run the development server
npm run dev
Open http://localhost:3000 with your browser to see the result.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
