A simple chores / to-do manager that just works
- TypeScript 33.1%
- Go 28.8%
- Vue 24.2%
- CSS 9.5%
- Nix 2.3%
- Other 2.1%
|
|
||
|---|---|---|
| app | ||
| cmd | ||
| frontend-test/unit | ||
| internal/pkg | ||
| public | ||
| .envrc | ||
| .gitignore | ||
| .nuxtrc | ||
| devshell.toml | ||
| Dockerfile | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| nuxt.config.ts | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| shell.nix | ||
| tsconfig.json | ||
| vitest.config.ts | ||
Donezo
A simple chores / to-do manager that just works
Goals
- Simple all around
- Flexible for even the most complex task schedules
- Sensible defaults
- No such thing as overdue
TODO
Backend written in Go State with Gorm (sqlite for now)
Frontend TBD
-
Models
-
Metatable
- gorm.Model
- ID
- CreatedAt
- UpdatedAt
- DeletedAt
- ExternalID (Guid)
- gorm.Model
-
Task
- Title (String)
- Description (String)
- OccurrenceRule (Null)
- AssignBy (Enum: LastCompleted, LeastCompleted, RoundRobin, Random)
- AssignableTo (List)
-
User (We assume a single admin level role for now)
- Name (String)
- Email (String)
- Password (String)
-
OccurrenceRule
- Task (Task)
- Frequency (Enum: Daily, Weekly, Monthly, Yearly, etc.)
- Count (Int)
- StartDate (DateTime)
- EndDate (DateTime)
- SkipInterval (Int) Number of intervals to skip between occurrences (e.g. every 2 days/weeks/months/years)
- ByDay (List<Enum: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday>)
- ByMonth (List)
- ByWeekDay (List)
- ByMonthDay (List)
-
TaskAssignment
- Task (Task)
- User (User)
- CompletedAt (DateTime)
-
-
Application Logic
- Task Scheduling
- Tests
- More stuff I have not added yet
-
API
- Endpoints
/api/v1/- User Management
/user/register- POST
/user/login- POST
/user/logout- POST
/users- GET
/user/{id}- GET
- PUT
- DELETE
/oidc(Reserved for future OIDC logins)
- Task Management
/tasks- GET
- POST (e.g. to create a new task)
/task/{id}- GET
- PUT
- DELETE
- POST (e.g. to mark as completed)
- User Management
- Endpoints
-
Frontend
Frontend
A proposed frontend for Donezo
Setup
- Install dependencies:
npm install - Start dev server:
npm run dev - Build for production:
npm run build - Preview prod build:
npm run preview