Skip to content

ahmed-rafiullah/trello-todo

Repository files navigation

A Modest 'trello' like App

Generic badge

license PRs Welcome JavaScript Style Guide Tests

This is the backend portion of the app

This is a trello like web app to organize and manage todos. Todos can be part of lists or as i call them groups. Each group is part of a board. A user can have multiple of all of these.

Features

Some functionalities are

  • Boards
    • starred boards
  • Groups
  • Todos
  • Todos can have
    • checklists
    • description in markdown
    • due date
    • tags
    • starred todo
    • cover - the image of a todo task
    • copy a todo
    • activity timeline
  • Users
  • Full text search and queryable information about all todos, groups and boards
  • Shortcuts

Quality checks

This app follows as close as possible node best practices https://github.com/goldbergyoni/nodebestpractices where ever applicable and feasable

  • Project Structure Practices
    • Structure your solution by components
    • Layer your components, keep Express within its boundaries
    • Wrap common utilities as npm packages
    • Separate Express 'app' and 'server' TODO: Use environment aware, secure and hierarchical config
    • Use environment aware, secure and hierarchical config
  • Error Handling Practices
  • Use Async-Await or promises for async error handling
  • Use only the built-in Error object
  • Distinguish operational vs programmer errors
  • Handle errors centrally, not within an Express middleware
  • Document API errors using Swagger or GraphQL
  • Exit the process gracefully when a stranger comes to town
  • Use a mature logger to increase error visibility

Tech stack

Uses Git flow for managing features. Uses eslint and prettier with pre commit hooks

Backend
  • Nodejs
  • Mysql for persistence
  • Vanilla Javascript - ES6
  • JWT for authorization - no session is maintained
  • API documentation using open api v3.0.1 schema and swagger ui
  • App ,database, and documentation server runs in a docker container
  • Internally uses pm2 for crash recovery
  • Uses LogRocket for App montoring
  • CI/CD done by jenkins
  • docker swarm for orchestration

How to run

place commands here

Run code tests

For testing i used supertest that can run tests directly againts api endpoints.

And mocha for unit and integration tests

Testing

Open in postman and start testing the api. Refer to swagger ui for documentation

    ██╗  ██╗██╗██████╗ ███████╗    ███╗   ███╗███████╗
    ██║  ██║██║██╔══██╗██╔════╝    ████╗ ████║██╔════╝
    ███████║██║██████╔╝█████╗      ██╔████╔██║█████╗  
    ██╔══██║██║██╔══██╗██╔══╝      ██║╚██╔╝██║██╔══╝  
    ██║  ██║██║██║  ██║███████╗    ██║ ╚═╝ ██║███████╗
    ╚═╝  ╚═╝╚═╝╚═╝  ╚═╝╚══════╝    ╚═╝     ╚═╝╚══════╝

I am actively looking for a job as a full stack developer who has devops experience.