To provide an end-to-end service to sustain musicians by providing a stream of students to teach, branding opportunities, and a full-service organizational package to help musicians achieve their dreams. The current platform can be found here: http://takesessions.com/
I acted as the Lead Software Engineer for approximately 4 months where I designed the database structure, and build out the infrastructure.
Below is the architecture of the backend system that I designed, coded, and deployed to support the engineering efforts. Much effort was made to establish a clear separation of concerns as well as establishing modularity to make scaling and future expansions at the database layer trivial.
For technical and cost reasons, a decision was made to utilize two databases. Therefore, a need arose to develop database abstractions.
Leveraged Facebook's DataLoader node.js module to front the DynamoDB layer by adding smart Batching & Caching techniques. The Caching Layer proved valuable so as to deliver data quickly without having to expend a round-trip request to AWS.
The database was designed to be a fully Promise-based solution. This further abstracted async complexities. I designed the CRUD functionalities as the application implementation required.
Created MongoDB wrapper to obscure any low-level API database calls. Also, this database wrapper complies to a promise implementation.
"apollo-server": "^0.3.2",
"aws-sdk": "^2.6.6",
"bluebird": "^3.4.6",
"body-parser": "^1.15.2",
"cors": "^2.8.1",
"dataloader": "^1.2.0",
"dotenv": "^2.0.0",
"express": "^4.14.0",
"express-graphql": "^0.5.4",
"graphql": "^0.7.1",
"graphql-tools": "^0.7.2",
"lodash": "^4.16.4",
"mongoose": "^4.6.5",
"node-uuid": "^1.4.7"