Therr App
Mobile Build
Description
A social network that connects people by proximity through the distance of time
Getting Started
First we need to setup Postgres and Redis to run locally. Mac users can install postgres with brew. It's best to configure postgres with no password for simplicity. We can also create a user and grant them superuser privileges. See 'Database Setup below'. Also make sure postgis is installed along with postgres as its required for maps services. See 'Database Setup below'.
Database Setup
We first need to create our 4 dev databases therr_dev_users, therr_dev_maps, therr_dev_reactions, therr_dev_messages and create a schema, "main" in each db. Then we can proceed to run the database migration scrips found in each sub-directory. See each microservice README.md (ie. therr-services/users-service/README.md) for detailed steps.
Installing Dependencies
We have some helper scripts in the root package.json. Try npm run install:all
to loop through each microservice and install npm packages. This script first preps your environment to ensure you have the correct npm and node version. It's best to use nvm to manage these versions. Run npm run build:all:dev
from the root to build all the custom libraries.
Running The App Locally
Setup the .env with correct credentials. Each microservice has it's own package.json with start scripts. We can simply build with npm run build:dev
then run npm run start
to run the nodejs service with nodemon. See each microservice README.md (ie. therr-services/users-service/README.md) for detailed steps.
Documentation
Documentation is mantained within the repo to align with a mentality of inline documentation, knowledge share, self documenting code, and consolidation of information/configrations.
Libraries & Utilities Docs
These packages should use treeshaking and emphasize reusability, clean code, single-purpose methodologies
API Gateway Docs
API Gateway is a public service that interfaces with microservices. It adds a layer of abstraction along with security and validations.
Microservice Docs
Microservices are secured in a private subnet (excluding websocket-service).
- Maps Service Documentation
- Messages Service Documentation
- Users Service Documentation
- Websocket Service Documentation
Frontend Docs
The web frontend and mobile app frontend share a common redux layer from the Therr React Library