Coder Social home page Coder Social logo

ameliorate's Introduction

aMeliorate

(This app is in Progress)

Proposal

aMeliorate is an MVC progressive web app for those who want to optimize their lives. It lets users track daily personal statistics and visualize them over time to understand the effects of various influences on their wellbeing.

As a general example, notice that on Monday you had 6 cups of water and pasta for lunch and dinner which made you feel sluggish on Tuesday. Whereas on Thursday you exercised, had 12 cups of water and plenty of vegetables, and as a result felt great on Friday.

Description

I'm using Node.JS and Express as the Controller layer and GraphQL through Apollo to access and serve data. Rather than a traditional RESTful API, this setup optimizes dataflows by only interacting with the specific data that the client application is requesting, so that requests to the server are reduced and the application can scale better.

For the Model layer I'm using PostgreSQL with the Node.JS ORM Knex.JS in order to parameterize SQL queries and prevent SQL injections. The app will also be taking advantage of AWS Cognito for user authentication and authorization to prevent a user from accessing pages they’re not supposed to access, like editing another user’s profile. AWS Lambda will be utilized for running certain functions to reduce the request load on the Express server.

The View layer/frontend is built using React for component-based UI rendering since it's a lightweight, easily customizable library that only re-renders certain parts of the app if they've changed from the previously stored version (comparing the diff), Redux as the central state store, and Jest for unit testing. I'm aiming to build the project as a progressive web app which will allow it to be accessed both from the web and as a native app with offline capabilities.

I chose to develop the application in TypeScript in order to prevent runtime type errors that can happen with data interaction in dynamic languages like JavaScript where types are easily changed. I set up both frontend and backend in Docker to ensure consistency in terms of development environments so that any developer on any system can pick up the project and start developing with minimal setup and no dependency issues. I'm using CircleCI for continuous integration so that every change to the code will be tested whenever it's uploaded to GitHub.

Getting Started

Deployed version coming soon!


To run the app locally (make sure to install Docker and Docker-Compose):

  1. Clone and download the repo.
  2. Navigate to the project folder.
  3. run "npm install" and then "docker-compose up --build" in both frontend and backend subdirectories.
  4. The app should be running on http://localhost:3000 and the server on http://localhost:8080.

Technologies and Tools

Node.js, TypeScript, React, Redux, Express, GraphQL, Apollo, PostgreSQL, Knex, Docker, CircleCI

Models

User Schema

ID First Name Last Name Email Join Date
Primary Key String String String Timestamp

Stats Schema

User_ID Entry Date Weight Water Intake Sleep Amount Sleep Quality Exercise Type Exercise Length Exercise Intensity Overall Feeling
Foreign Key Timestamp Integer Integer Integer Integer String Integer Integer Integer

ameliorate's People

Contributors

cippero avatar

Watchers

James Cloos 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.