The creatively named react-todo project is a recreation of the todoist web app.
This project exists solely to allow me to refresh my skillset with a modern React stack, having worked primarily with Vue/Nuxt for a couple of years.
The current phase of this project has been built without a meta-framework e.g Next.js as I believe it would be overkill for a project of this size. Plus, I believe in prinicples-first learning - that learning how to build without a tool before learning how to build with it develops a far greater appreciation and understanding for that too - and the main purpose of this project is to learn!
To make this experience as realistic as possible, I have opted to use all of the tools that I would expect to find in a production codebase. This includes:
- Code linting & formatting
- Unit tests
- End-to-end test
I intend to expand this project to recreate the core functionality of the todoist app.
- Inbox page ✅
- Today page
- Global Search
- Build custom server to handle requests (currently uses DummyJson API)
This app is built using TypeScript along with these wonderful packages:
- 🏗️ Framework: React 18
- 📡 Routing & Request Handling: TanStack (Router & Query)
- 🎨 Styles: Tailwind
- 🖼️ UI Library: Shadcn
- 🧪 Unit Testing: Vitest (with HappyDom)
- 🧪 End-to-end Testing: Playwright
- 🔨 Build Tool: Vite
- 🔍 Linting: ESLint
- 👨🎨 Formatting: Prettier
If for some reason, you want to run this app locally, follow the steps below.
- Clone or fork this repo:
git clone https://github.com/rstainsby/react-todo
cd
into the project directory and runpnpm install
- Once all dependencies are installed run
npm run dev
- Open
http://localhost:5173
in your browser
npm run dev
npm run build
npm run test
npm run lint
npm run lint:fix
npm run format
npm run coverage