Duration: 7 Days Tech Stack: SvelteKit, Shadcn Svelte, Supabase
Build a simple task management application where users can authenticate, create tasks, and view their task list. This assignment tests your understanding of modern frontend development, authentication flows, and database integration.
Create a new supabase project and Implement user authentication using Supabase:
- Email and password registration
- Form validation (email format, password strength)
- Error handling for existing users
- Email and password login
- “Remember me” functionality
- Password reset link (can be placeholder)
- Redirect unauthenticated users to login
- Persist session across page refreshes
- Clear session and redirect to login
Create a form to add new tasks with the following fields:
- Title (required, text input, max 100 characters)
- Description (optional, textarea, max 500 characters)
- Priority (required, select dropdown: Low, Medium, High)
- Due Date (required, date picker)
- Status (default: “Pending”, options: Pending, In Progress, Completed)
- Client-side validation
- Display validation errors clearly
- Submit button should be disabled while submitting
- Show success/error messages after submission
- Clear form after successful submission
Display all tasks created by the logged-in user:
- Title
- Description (truncated if too long)
- Priority (with color coding)
- Due date (formatted nicely)
- Status badge
- Sort by: Due date, Priority, Created date
- Filter by: Status, Priority
- Search by title
- Empty state when no tasks exist
- Edit task (inline or modal)
- Delete task (with confirmation)
- Mark as complete/incomplete
- Use shadcn-svelte components throughout
- Responsive design (mobile, tablet, desktop)
- Loading states for async operations
- Consistent color scheme and spacing
- Use sveltekit’s form actions for submissions (Required)
- Implement proper load functions
- Handle errors gracefully
- Create tasks table with proper RLS policies
- User-specific data access (users see only their tasks)
- Real-time subscriptions (optional bonus)
- Clean, readable code with comments
- Proper component structure
- TypeScript types (bonus)
- Error boundaries
Create a public repository. Include a comprehensive README with:
- Setup instructions
- Environment variables needed
- Screenshots of the application
- Any assumptions or design decisions
- Deploy on Vercel/Netlify
- Provide demo credentials if needed
- Comment complex logic
- Document any third-party libraries used
- List any known issues or limitations
- Real-time updates when tasks are added/updated
- Dark mode toggle
- Task categories/tags
- Task due date reminders
- Collaborative tasks (share with other users)
- SvelteKit Documentation
- shadcn-svelte Components
- Supabase Documentation
- Supabase Auth with SvelteKit
- Zod Validation
- Superforms for Sveltekit
Note: Focus on building a functional MVP first, then enhance with additional features if time permits. Use Sveltekit’s form actions and other validation tools as needed.