The Todo List App is a full-stack application designed to help users manage their tasks efficiently. The project is built using TypeScript with a React frontend and a Node.js/Express backend. It follows specific best practices for database naming conventions and offers a structured approach for managing tasks.
- Frontend: Developed with Create React App, featuring hot reloading, a built-in test runner, and production build optimizations.
- Backend: Built with Node.js and Express, following a clear guide for database naming conventions and schema migrations using Knex.js.
- Database: Implements a consistent naming convention for tables and columns, ensuring clarity and maintainability.
- API Layer: Provides a seamless interface between the frontend and backend, handling data transformation between database and client formats.
- Node.js
- npm (Node Package Manager)
-
Clone the repository:
git clone https://github.com/spencerfrost/todo-list-app.git cd todo-list-app
-
Install dependencies for both client and server:
cd client npm install cd ../server npm install
In the client
directory, you can run:
npm start
: Runs the app in development mode. Open http://localhost:3000 to view it in the browser.
In the server
directory, you can run:
npm start
: Starts the server on http://localhost:3221.
In the client
directory, you can run:
npm start
: Runs the app in development mode.npm test
: Launches the test runner in interactive watch mode.npm run build
: Builds the app for production.npm run eject
: Ejects the Create React App configuration for customization.
npm start
: Starts the server.
- Use snake_case for table and column names.
- Use all lowercase letters and full words rather than abbreviations.
exports.up = function(knex) {
return knex.schema.alterTable('tasks', function(table) {
table.renameColumn('energyLevel', 'energy_level');
table.renameColumn('estimatedTime', 'estimated_time');
table.renameColumn('dueDate', 'due_date');
});
};
exports.down = function(knex) {
return knex.schema.alterTable('tasks', function(table) {
table.renameColumn('energy_level', 'energyLevel');
table.renameColumn('estimated_time', 'estimatedTime');
table.renameColumn('due_date', 'dueDate');
});
};
This project is licensed under the MIT License.
For more details, please refer to the LICENSE file.