Giter Site home page Giter Site logo

dmt_manager's Introduction

DMT Manager

Small scale app to manager deliveries, made to help a friend

Install

Use docker-compose to install the app.

docker compose -f docker-compose.yml up -d

Temporary HTML interface accessible on localhost:3000
MongooseExpress interface on localhost:8081
MongoDB on localhost:4000

Uses

Main problem that the app intend to solve is collecting data about each parcels to be transported.

A transport is an object requiring a driver, a vehicle and an array of deliveries
A delivery is an object requiring a pickup & a dropoff placetimes
A placetime denotes a type (pickup || dropoff), a client, a location and a date
A client has a name and an array of locations

Comments

Concepts and points of interest:

  • MongoDB and Object Data Modeling with Mongoose
    • Use of embedded documents vs linking with ObjectIds
    • Design choices based on Domain specific needs and specific cases
      • Ability to keep address embedded in parcels
        • Clients addresses can be changed and deleted without breaking links for parcels
      • Linking parcels to clients
        • No parcels go unaccounted for
  • Express.js and Node.js
  • API optimization
    • By reducing calls to DB
    • Implementing aggregation pipeline
      • To keep compute heavy operations on server side
      • Reduce size of data sent over wires

Planned features

Front End / React App

Views

  • Home page
    • Add New Transport
    • Modales quick add
      • Client
      • Driver
      • Vehicle
  • Client
    • Locations list
  • Transports
    • Transport list
      • Driver
      • deliveries[0].pickup.place.city
      • deliveries[0].pickup.date
      • deliveries[deliveries.length].dropoff.place.city
      • deliveries[deliveries.length].dropoff.date
  • Drivers
    • List of drivers
      • Transports count
      • List of transports by driver
  • Parcels
    • List of parcels
      • pickup, dropoff
        • Link Client
        • Embed Location
        • Embed date

Back End

  • Various optimizations & refactors

Architecture

Use of Mongodb Aggregation Pipeline to manage data display relativily
MVC structure with Express coupled with Mongoose ODM manager
Docker image is using alpine to be as lightweight as possible

Data Models

TODO => Some kind of file to recap data models

API Specs

TODO => Open API file

dmt_manager's People

Contributors

hezirel avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.