A full-stack task management application with Japanese language support, built with TypeScript, React, and Express.js.
- β Create, read, update, and delete tasks
- π Set deadlines for tasks
β οΈ Visual warnings for approaching and overdue deadlines- β Mark tasks as completed
- π―π΅ Japanese date formatting (YYYYεΉ΄MMζDDζ₯ HH:mm)
- π± Responsive web interface
- π Real-time updates with React Query
- Yellow highlight: Tasks due within 3 days (ζιγθΏγ₯γγ¦γγΎγ)
- Red highlight: Overdue tasks (ζιγιγγ¦γγΎγ)
- Node.js 22
- Express.js 5
- TypeScript
- SQLite3 (better-sqlite3)
- Zod for validation
- Winston for logging
- React 19
- TypeScript
- React Router v7
- React Query (TanStack Query)
- Vite
- Axios
- Node.js 22.x or higher
- npm 11.x or higher
- Clone the repository:
git clone https://github.com/serverless-operations/todo-app-using-spec-kit.git
cd todo-app
- Install dependencies:
# Install all dependencies (root, backend, and frontend)
npm run install:all
npm run dev
This will start:
- Backend API server on http://localhost:4000
- Frontend dev server on http://localhost:5173
Backend only:
npm run dev:backend
Frontend only:
npm run dev:frontend
# Build both backend and frontend
npm run build
# Start production server
npm run start
npm run test
npm run test:backend
npm run test:frontend
cd backend && npm run test:coverage
cd frontend && npm run test:coverage
todo-app/
βββ backend/
β βββ src/
β β βββ db/ # Database initialization
β β βββ middleware/ # Express middleware
β β βββ models/ # Data models and validation
β β βββ routes/ # API routes
β β βββ services/ # Business logic
β β βββ types/ # TypeScript types
β β βββ utils/ # Utility functions
β βββ tests/
β β βββ contract/ # API contract tests
β β βββ integration/ # Integration tests
β β βββ unit/ # Unit tests
β βββ data/ # SQLite database file
βββ frontend/
β βββ src/
β β βββ components/ # React components
β β βββ hooks/ # Custom React hooks
β β βββ pages/ # Page components
β β βββ providers/ # Context providers
β β βββ services/ # API services
β β βββ types/ # TypeScript types
β βββ tests/ # Frontend tests
βββ docs/ # Documentation
βββ specs/ # Specifications
See docs/api.md for detailed API documentation.
Method | Endpoint | Description |
---|---|---|
GET | /api/tasks |
Get all active tasks |
GET | /api/tasks/completed |
Get completed tasks |
GET | /api/tasks/:id |
Get task by ID |
POST | /api/tasks |
Create new task |
PUT | /api/tasks/:id |
Update task |
DELETE | /api/tasks/:id |
Delete task |
PATCH | /api/tasks/:id/complete |
Mark task as complete |
PORT=4000
FRONTEND_URL=http://localhost:5173
VITE_API_URL=http://localhost:4000
The application uses SQLite for data persistence. The database file is automatically created at backend/data/tasks.db
on first run.
CREATE TABLE tasks (
id TEXT PRIMARY KEY,
content TEXT NOT NULL,
deadline TEXT NOT NULL,
status TEXT NOT NULL,
created_at TEXT NOT NULL,
completed_at TEXT
)
npm run dev
- Run both backend and frontend in development modenpm run build
- Build both backend and frontendnpm run start
- Start production servernpm run test
- Run all testsnpm run install:all
- Install all dependencies
npm run dev
- Start development server with hot reloadnpm run build
- Compile TypeScript to JavaScriptnpm run start
- Start production servernpm run test
- Run testsnpm run db:init
- Initialize database
npm run dev
- Start Vite dev servernpm run build
- Build for productionnpm run preview
- Preview production buildnpm run lint
- Run ESLint
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License.
Built with Spec-Driven Development methodology.