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 tableCREATETABLEIF NOT EXISTS tasks ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULLREFERENCESauth.users(id) ON DELETE CASCADE, title TEXTNOT NULL, description TEXT DEFAULT '', priority TEXTNOT NULLCHECK (priority IN ('Low', 'Medium', 'High')), due_date TIMESTAMPTZNOT NULL, status TEXTNOT 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 lookupsCREATEINDEXIF NOT EXISTS idx_tasks_user_id ON tasks(user_id); -- Create index for filtering by statusCREATEINDEXIF NOT EXISTS idx_tasks_status ON tasks(status); -- Create index for sorting by due_dateCREATEINDEXIF NOT EXISTS idx_tasks_due_date ON tasks(due_date); -- Enable Row Level SecurityALTERTABLE 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 timestampCREATE OR REPLACEFUNCTIONupdate_updated_at_column() RETURNS TRIGGER AS $$ BEGINNEW.updated_at= NOW(); RETURN NEW; END; $$ LANGUAGE plpgsql; -- Create trigger to auto-update updated_atCREATETRIGGERupdate_tasks_updated_at BEFORE UPDATEON 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_urlSUPABASE_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



