This project is a simple task management application built with SvelteKit. It was created as a beginner-friendly tutorial project to explore Svelte as an alternative frontend framework to React.
The application allows users to add tasks, mark them as completed, delete tasks, and save tasks in the browser using localStorage.
The purpose of this project is to demonstrate how Svelte can be used to build a small interactive web application. It also introduces several core Svelte concepts, including component structure, reactivity, event handling, data binding, conditional rendering, list rendering, and browser storage.
This project is designed for students who are familiar with React and want to see how Svelte differs in syntax and development style.
git clone <>
cd svelte-study-planner
npm install
npm run dev
src/
├── lib/
│ └── TodoApp.svelte
├── routes/
│ └── +page.svelte
TodoApp.svelte: contains the main todo application logic and interface+page.svelte: imports and displays the TodoApp component as the main pageThis project uses a Svelte component called TodoApp.svelte to organize the main application UI and logic.
The app uses Svelte 5 reactive state with $state(...). When the task list changes, the UI updates automatically.
The input field uses bind:value={newTask} so the variable always stays in sync with the text box.
The app uses event handlers such as:
onclick={addTask}onclick={() => deleteTask(task.id)}onkeydown={(e) => e.key === 'Enter' && addTask()}These handlers make the application interactive.
The app uses {#if} to show a message when there are no tasks.
The app uses {#each} to display all tasks in the array.
The app uses localStorage to save tasks so they remain available after the page is refreshed.
When the application is loaded, it checks whether saved tasks already exist in localStorage. If they do, the tasks are loaded into the app.
Whenever a task is added, completed, or deleted, the updated task list is saved back into localStorage.
This makes the app more practical and improves the user experience.
This project also helped me compare Svelte with React.
bind:valueuseStateThrough this project, I found that Svelte is simple and beginner-friendly for building small applications. Features like direct binding and built-in reactivity make the code easier to read and write.
Compared with React, Svelte feels more straightforward for basic projects because there is less setup and less boilerplate. However, React still has advantages in terms of ecosystem, community support, and real-world industry usage.
Overall, Svelte is a strong alternative for frontend development, especially for developers who want a lightweight and elegant framework.
If this project were expanded further, possible improvements could include:
Created for a web development assignment exploring a technology outside the course material.