Skip to content

GovardhaneNitin/Queue

Repository files navigation

๐Ÿ“‹ Queue - Task Management Application

Live Demo


๐ŸŽฏ About the Project

Queue is a modern, intuitive task management application that helps you organize your work efficiently. Built with cutting-edge technologies like SvelteKit and Supabase, it offers a seamless experience with features like priority management, status tracking, and smart filtering all wrapped in a beautiful, responsive interface that adapts to your preferred theme.

๐Ÿ’ผ Note: Developed as a Frontend Intern Assignment Task for Proxie Studio


๐Ÿ“ธ Screenshots

๐ŸŽฏ Dashboard
Dashboard
๐Ÿ” Login Page
Login
๐Ÿ‘ค Profile Page
Profile

โœจ Features

๐Ÿ” Authentication

  • โœ… Email & password registration
  • โœ… Secure session management
  • โœ… Password reset functionality
  • โœ… Protected routes with auto-redirects
  • โœ… Session persistence
  • โœ… Instant logout updates

๐Ÿ“ Task Management

  • โœ… Create tasks with rich details
  • โœ… Edit existing tasks
  • โœ… Delete with confirmation
  • โœ… Toggle completion status
  • โœ… Real-time Zod validation
  • โœ… Dual validation (client + server)

๐ŸŽฏ Task Organization

  • โœ… Sort by date, priority, status
  • โœ… Filter by status categories
  • โœ… Quick search by title
  • โœ… Color-coded priority badges
  • โœ… Visual status indicators
  • โœ… Elegant empty states

๐ŸŽจ UI/UX Excellence

  • โœ… Fully responsive design
  • โœ… Dark/Light mode toggle
  • โœ… Loading state feedback
  • โœ… Toast notifications
  • โœ… Smooth animations
  • โœ… ARIA accessibility

๐Ÿ› ๏ธ Tech Stack

SvelteKit
SvelteKit
Framework
shadcn-svelte
shadcn-svelte
UI Components
Supabase
Supabase
Database & Auth
Zod
Zod
Validation
TailwindCSS
TailwindCSS
Styling
Lucide
Lucide Svelte
Icons
PostgreSQL
PostgreSQL
Database
JavaScript
JavaScript
Language

๐Ÿš€ Setup Instructions

Prerequisites

  • Node.js 18.x or higher
  • npm or pnpm package manager
  • Supabase account

1. Clone the Repository

git clone https://github.com/GovardhaneNitin/Queue.git
cd Queue

2. Install Dependencies

npm install

3. Set Up Supabase

Step 1: Create a Supabase Project

  1. Go to supabase.com and sign in
  2. Click "New Project"
  3. Fill in your project details:
    • Name: Queue (or any name you prefer)
    • Database Password: Create a strong password (save it!)
    • Region: Choose the closest region to you
  4. Click "Create new project" and wait for it to provision

Step 2: Configure Authentication

  1. In your Supabase project, go to Authentication โ†’ Providers
  2. Ensure Email provider is enabled
  3. Go to Authentication โ†’ Email Templates and customize if needed
  4. Important: For development, disable email confirmation:
    • Go to Authentication โ†’ Providers โ†’ Email
    • Uncheck "Enable email confirmations" (you can re-enable for production)

Step 3: Set Up the Database

  1. In your Supabase project, go to SQL Editor
  2. Click "New query"
  3. Copy and paste the following SQL schema:
-- Create tasks table
CREATE TABLE IF NOT EXISTS tasks (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
  title TEXT NOT NULL,
  description TEXT DEFAULT '',
  priority TEXT NOT NULL CHECK (priority IN ('Low', 'Medium', 'High')),
  due_date TIMESTAMPTZ NOT NULL,
  status TEXT NOT NULL DEFAULT 'Pending' CHECK (status IN ('Pending', 'In Progress', 'Completed')),
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- Create index for user_id lookups
CREATE INDEX IF NOT EXISTS idx_tasks_user_id ON tasks(user_id);

-- Create index for filtering by status
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);

-- Create index for sorting by due_date
CREATE INDEX IF NOT EXISTS idx_tasks_due_date ON tasks(due_date);

-- Enable Row Level Security
ALTER TABLE tasks ENABLE ROW LEVEL SECURITY;

-- Create policies
-- Users can only see their own tasks
CREATE POLICY "Users can view own tasks"
  ON tasks FOR SELECT
  USING (auth.uid() = user_id);

-- Users can insert their own tasks
CREATE POLICY "Users can insert own tasks"
  ON tasks FOR INSERT
  WITH CHECK (auth.uid() = user_id);

-- Users can update their own tasks
CREATE POLICY "Users can update own tasks"
  ON tasks FOR UPDATE
  USING (auth.uid() = user_id)
  WITH CHECK (auth.uid() = user_id);

-- Users can delete their own tasks
CREATE POLICY "Users can delete own tasks"
  ON tasks FOR DELETE
  USING (auth.uid() = user_id);

-- Create function to update updated_at timestamp
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
  NEW.updated_at = NOW();
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- Create trigger to auto-update updated_at
CREATE TRIGGER update_tasks_updated_at
  BEFORE UPDATE ON tasks
  FOR EACH ROW
  EXECUTE FUNCTION update_updated_at_column();
  1. Click "Run" to execute the SQL
  2. Verify the tasks table was created:
    • Go to Table Editor
    • You should see a tasks table with all columns

Step 4: Get Your API Keys

  1. Go to Project Settings โ†’ API
  2. Copy the following values:
    • Project URL (looks like https://xxxxx.supabase.co)
    • anon public key (starts with eyJ...)

4. Environment Variables

Create a .env file in the root directory:

SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_key

Where to find these values:

  • Go to your Supabase project dashboard
  • Navigate to Settings โ†’ API
  • Copy the Project URL and anon/public key

5. Run the Development Server

npm run dev

The application will be available at http://localhost:5173


๐Ÿ”ฎ Future Enhancements

๐Ÿš€ Coming Soon

  • ๐Ÿ”„ Real-time Subscriptions
    Live updates when tasks change
  • โฐ Due Date Reminders
    Push notifications for deadlines
  • ๐Ÿ‘ฅ Collaborative Tasks
    Share tasks with team members
  • ๐Ÿท๏ธ Categories & Tags
    Custom organization system

๐Ÿ’ก Roadmap

  • ๐Ÿ“Š Analytics Dashboard
    Track productivity & completion rates
  • ๐Ÿ“ฑ Progressive Web App
    Install as mobile app with offline mode
  • ๐Ÿ” Advanced Search
    Full-text search with filters
  • ๐Ÿ“Ž File Attachments
    Attach files & images to tasks

๐Ÿ‘จโ€๐Ÿ’ป Developer Information

Nitin Govardhane
Nitin Bhausaheb Govardhane
๐ŸŽ“ MCA Science Student
MIT World Peace University, Pune

Email LinkedIn Portfolio

๐Ÿ™ Acknowledgments

๐Ÿ’ผ Proxie Studio
For providing the assignment opportunity

๐Ÿ“„ License

This project is open source and available for educational purposes.


Built with โค๏ธ by Nitin Govardhane

Made with SvelteKit โ€ข Powered by Supabase โ€ข Styled with TailwindCSS