Skip to content

Repository files navigation

🚀 TaskForge

A collaborative project management & gamified habit tracking platform

Next.js Supabase TypeScript Tailwind CSS License: MIT

Forge your habits. Ship your projects. Together.


✨ Overview

TaskForge is a full-stack productivity web application that unifies two workflows in one sleek, dark-mode interface:

  • Collaborative Task Management — Create projects, invite teammates, assign tasks, set priorities & due dates, and track real-time progress with live activity feeds.
  • Gamified Habit Tracking — Build personal habits with streaks, XP, levels, and achievement badges to stay consistent every day.

🎯 Features

🗂️ Project Workspace

Feature Description
Projects Create and manage multiple projects per workspace
Members & Roles Invite teammates as admin or member via email
Task Board Kanban-style tasks with To Do, In Progress, Done statuses
Priorities Mark tasks as High, Medium, or Low priority
Due Dates Assign deadlines to keep work on track
Activity Feed Real-time log of every team action
Email Invitations Invite users who auto-join on account creation

🏆 Habit Tracker

Feature Description
Daily Habits Create habits with custom emoji, color & category
Streaks Track consecutive completion days with 🔥 streak counters
XP & Levels Earn 10 XP per completion and level up
Achievements Unlock badges (Getting Started, Week Warrior, Consistency King)
Confetti 🎉 Animated celebration on every habit completion
Command Center Dashboard combining projects, activity feed, and today's habits

🔐 Auth & Security

  • Email/password authentication via Supabase Auth
  • Row Level Security (RLS) — users can only access their own data and projects they are members of
  • Auto-profile creation on signup with randomized avatar color
  • Middleware-protected routes (workspace requires active session)

🛠️ Tech Stack

Layer Technology
Framework Next.js 14 (App Router, Server Components)
Language TypeScript 5
Database & Auth Supabase (PostgreSQL + Realtime + Auth)
Styling Tailwind CSS 3
Icons Lucide React
Charts Recharts
Animations canvas-confetti

📁 Project Structure

taskforge/
├── src/
│   ├── app/
│   │   ├── (workspace)/          # Protected routes (requires login)
│   │   │   ├── dashboard/        # Command Center — habits + projects overview
│   │   │   ├── habits/           # Personal habit management
│   │   │   ├── projects/[id]/    # Individual project board & members
│   │   │   └── layout.tsx        # Workspace shell with sidebar navigation
│   │   ├── auth/                 # Auth callback handler
│   │   ├── login/                # Sign in / Sign up page
│   │   ├── layout.tsx            # Root layout
│   │   └── page.tsx              # Landing / redirect
│   ├── components/
│   │   └── layout/               # Shared UI components (sidebar, etc.)
│   ├── hooks/                    # Custom React hooks
│   ├── lib/
│   │   ├── supabase/             # Supabase client (browser + server + middleware)
│   │   └── habits/               # Streak calculation logic
│   └── middleware.ts             # Auth middleware for route protection
├── supabase_schema.sql           # Full database schema with RLS policies & triggers
├── .env.example                  # Environment variable template
└── package.json

🚀 Getting Started

Prerequisites

1. Clone the repository

git clone https://github.com/Shadow-Protectors/TaskForge.git
cd TaskForge

2. Install dependencies

npm install

3. Set up Supabase

  1. Create a new project at supabase.com
  2. Go to SQL Editor and run the full contents of supabase_schema.sql
    • This creates all tables, RLS policies, triggers, and enables Realtime
  3. Go to Settings → API and copy your Project URL and anon public key

4. Configure environment variables

cp .env.example .env

Open .env and fill in your Supabase credentials:

NEXT_PUBLIC_SUPABASE_URL=https://your-project-ref.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-public-key-here

5. Run the development server

npm run dev

Open http://localhost:3000 — sign up and start forging! ⚡


🗄️ Database Schema

The supabase_schema.sql file sets up the full database with a single command. Here is an overview:

profiles          → Extends Supabase Auth users (name, email, avatar_color)
projects          → Team workspaces owned by a user
project_members   → Many-to-many: users ↔ projects (role: admin | member)
project_invitations → Email-based pending invitations
tasks             → Cards with title, priority, status, due_date
task_assignments  → Many-to-many: tasks ↔ users
activity_log      → Timestamped audit trail per project
habits            → Personal daily habits (emoji, color, category)
completions       → Daily habit check-ins (unique per user/habit/date)

Key behaviors (via triggers):

  • 🔑 New user signup → auto-creates profile, auto-joins any pending project invitations
  • 🏗️ New project created → creator is automatically added as admin member

🔒 Environment Variables

Variable Description
NEXT_PUBLIC_SUPABASE_URL Your Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEY Your Supabase anonymous public key

⚠️ Never commit your .env file. It is excluded by .gitignore. Only .env.example (with placeholder values) is tracked.


📜 License

This project is licensed under the MIT License.


Made with ❤️ by the Shadow Protectors team

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages