Mark-my-todos is designed for users who prefer a single-page todo list. I personally used a todo.md
file for all my work-related tasks, but it eventually became unmanageable. So I switched to a custom solution: a todo.json
file that stores all todo elements, paired with a frontend built using Vue.js + TypeScript, and Bun as the runtime.
Warning
Currently, the frontend is only in French, i18n vue.js plugging will be added later.
- Single-page interface using Vue.js.
Searching motor with tag support(planned feature).- Multi-level organization: priorities, project categories, etc.
- Fully local and self-hosted.
You need three tools:
- bun for running the backend.
- node.js for running the frontend and for using
npm
as the package manager.
Note
There is a lack of coherence here. The project was initially intended to use Bun exclusively, but at some point during development, I ran npm i
instead of bun i
, which created a messy node_modules/
. This led to issues that resulted in the current setup, where npm
is used for everything: it runs Node.js for the frontend and Bun for the backend.
Then clone the repository and install dependencies:
git clone https://github.com/ArcadeCode/mark-my-todos.git
cd ./mark-my-todos/
npm install
npm dev
This will launch two servers:
- Backend (API): http://localhost:3000
- Frontend (UI): http://localhost:5173 You can also start only one of them with
npm frontend
ornpm backend
.
There are two independent builds, because Vite (the frontend bundler) cannot be minified as a standalone executable:
npm run build # Build the backend
npm run vite build # Build the frontend
Planned features and improvements for upcoming versions:
- [v1.1.x] Add a custom
build.sh
script to compile both the backend and frontend into a single executable. - [v1.1.x] Integrate a lightweight search engine using Fuse.js.
- [v1.2.x] Add new api endpoints to have a CRUD management of projects under
api/projects/
- [v1.2.x] Implement a calendar to show due dates and propose api connection to Google Calendar and others calendar
- [v1.1.x] File Rewrite Performance Bottleneck
All services (except/get
) currently follow the pattern:
read file → edit content → write full file
, resulting in a time complexity of O(s) where s is the size of the file.
This is unacceptable for production environments, even on local services.
Fix planned in v1.2: Refactor all affected services to support partial updates or streaming writes.