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
|
|
|
SvelteKit Framework |
shadcn-svelte UI Components |
Supabase Database & Auth |
Zod Validation |
|
TailwindCSS Styling |
Lucide Svelte Icons |
PostgreSQL Database |
JavaScript Language |
- Node.js 18.x or higher
- npm or pnpm package manager
- Supabase account
git clone https://github.com/GovardhaneNitin/Queue.git
cd Queuenpm install- Go to supabase.com and sign in
- Click "New Project"
- 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
- Click "Create new project" and wait for it to provision
- In your Supabase project, go to Authentication โ Providers
- Ensure Email provider is enabled
- Go to Authentication โ Email Templates and customize if needed
- Important: For development, disable email confirmation:
- Go to Authentication โ Providers โ Email
- Uncheck "Enable email confirmations" (you can re-enable for production)
- In your Supabase project, go to SQL Editor
- Click "New query"
- 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();- Click "Run" to execute the SQL
- Verify the
taskstable was created:- Go to Table Editor
- You should see a
taskstable with all columns
- Go to Project Settings โ API
- Copy the following values:
- Project URL (looks like
https://xxxxx.supabase.co) - anon public key (starts with
eyJ...)
- Project URL (looks like
Create a .env file in the root directory:
SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_keyWhere to find these values:
- Go to your Supabase project dashboard
- Navigate to Settings โ API
- Copy the Project URL and anon/public key
npm run devThe application will be available at http://localhost:5173
|
|
Nitin Bhausaheb Govardhane ๐ MCA Science Student MIT World Peace University, Pune |
|
๐ผ Proxie Studio
For providing the assignment opportunity |
This project is open source and available for educational purposes.
Built with โค๏ธ by Nitin Govardhane
Made with SvelteKit โข Powered by Supabase โข Styled with TailwindCSS



