Quicklist is a Remember The Milk inspired full-stack web application with dynamic features catered to programmers. Quicklist lets users create groups, add members, set tasks, subtasks, and assign due dates for members. Try out the app as a Demo user by clicking on the link above!
- Account Signup/Login/Logout
- Personal Dashboard Created Upon Signup
- Demo user
- Create/Delete groups
- Add/Remove group members
- Add New Personal/group tasks
- Display tasks By Ascending Due Date
- Assign tasks To group members By Having Them Become The task Owner
- All tasks Assigned To user Appear On Dashboard
- task Owners Can Create/Delete Subtasks
- Edit tasks If task Owner
- Mark task As Complete If task Owner
- Search Through tasks In group
- Scroll Through Long List Of tasks
To run locally, you must have NodeJS and Postgres installed on your machine. Once they are installed, Download/Git Clone the repo and create an .env and database following the .env.example located in the root of the repo. Then look at the repo's package.json located in the root to see what packages the project is dependant on. Use npm install
to install those dependencies. After that, use Sequelize to run all the migrations (npx dotenv sequelize-cli db:migrate
) and then run all pending seeds (npx dotenv sequelize-cli db:seed:all
). Check to see if the database was properly seeded using psql. If seeded correctly, run the server using npm start
.
- BcryptJS - Bcrypt in JS (hash passwords).
- Cookie-Parser - Parse HTTPS request cookies.
- Csurf - Node.js CSRF protection middleware.
- Express - Node.js web framework.
- Express Session - Session middleware for Express.
- Express Validator - Validator module middleware for Express.
- HTTP Errors - Create HTTP Error Objects.
- Morgan - HTTP request logger middleware.
- Per ENV - Clean up package.json.
- Pug - HTML templating engine.
- Sequelize - ORM.
- Dotenv - Load environment variables.
- Nodemon - Development monitoring script.
- Make overdue task name in red.
- Prevent from making task due in past.
- Indicate task have subtask on the left panel.
- Right pane subtasks are checkboxes.
- Animation.
- Improved UI/UX.
- Extended group functionality.
- NPM tests hooked to complete subtasks.
The database schema required more forethought than any other technical aspect of this project. Thinking carefully about this led to a schema that was aligned with our front-end queries. For example, deciding early that a group owner was not a member of that group kept the group owner out of the member table. This kept our queries shorter and easier to debug when we needed to, for example, restrict non group owners from write/update/delete privileges.