My specialty is making unintentionally useless things, mostly software.
A modern full-stack todo application built with Vue 3, Node.js, TypeScript, and SQLite. This project serves as a starter template for building full-stack web applications with a clean separation of concerns and modern development practices.
/shared/ folderClone the repository
git clone https://github.com/ProjectDepot/vue-node-sqlite-starter
cd vue-node-starter
Install dependencies
npm run install:all
Start development servers
npm run dev
This will start both the client and server in development mode:
A documentation site is available, built with Vitepress.
npm run docs:dev (opens at http://localhost:5174)npm run docs:buildvue-node-sqlite-starter/
├── client/ # Vue 3 frontend
│ ├── src/
│ │ ├── components/ # Vue components
│ │ ├── App.vue
│ │ └── main.ts
│ ├── package.json
│ └── vite.config.ts
├── server/ # Node.js backend
│ ├── src/
│ │ ├── routes/ # API routes
│ │ ├── database.ts # SQLite setup
│ │ └── index.ts # Server entry point
│ └── package.json
├── shared/ # Shared code and types
│ ├── src/
│ │ ├── types.ts # Shared TypeScript interfaces
│ │ └── index.ts
│ └── package.json
├── docs/ # Documentation site (VitePress)
│ ├── .vitepress/
│ │ └── config.mts # VitePress configuration
│ ├── index.md # Documentation homepage
├── package.json # Root workspace configuration
└── README.md
npm run dev - Start both client and server in development modenpm run dev:client - Start only the client development servernpm run dev:server - Start only the server in development modenpm run build - Build all workspaces for productionnpm run build:client - Build only the clientnpm run build:server - Build only the servernpm run build:shared - Build only the shared packagenpm run install:all - Install dependencies for all workspacesnpm run clean - Clean build artifactsnpm start - Start the production servernpm run docs:dev - Start VitePress development servernpm run docs:build - Build documentation for productionnpm run docs:preview - Preview production build locallyCreate a .env file in the root directory for environment-specific configuration:
# Server Configuration
PORT=4000
NODE_ENV=development
# Database Configuration
DATABASE_URL=todos.db
# CORS Configuration
CLIENT_URL=http://localhost:3000
Build the application
npm run build
Start the server
npm start
All 3 parts (client, server, shared) are built to and served from /dist/.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.