|
||
---|---|---|
.github/workflows | ||
.husky | ||
.storybook | ||
.vscode | ||
apps | ||
auth0 | ||
aws/maybe-app | ||
libs | ||
prisma | ||
tools | ||
.dockerignore | ||
.editorconfig | ||
.env.example | ||
.eslintrc.json | ||
.gitignore | ||
.prettierignore | ||
.prettierrc | ||
babel.config.json | ||
custom-express.d.ts | ||
docker-compose.yml | ||
jest.config.ts | ||
jest.preset.js | ||
LICENSE | ||
nx.json | ||
package.json | ||
README.md | ||
redis.conf | ||
redis.Dockerfile | ||
render.yaml | ||
tsconfig.base.json | ||
vercel.json | ||
workspace.json | ||
yarn.lock |
Maybe: An open-source personal finance app
🚨 NOTE: This is the original React/Next.js app of the now-defunct personal finance app, Maybe. This original version used many external services (Plaid, Finicity, Auth0, etc) and getting it to fully function will be a decent amount of work.
The README below was what we used internally, so many of the links won't work and the instructions won't necessarily be applicable.
There's a LOT of work to do to get this functioning, but it should be feasible.
The best way to get involved is on Discord and in the Issues.
Monorepo File Structure Overview
This repository uses the monorepo management tools from NRWL called nx
. The NX dev tools come with pre-configured TS, ESLint, Prettier, Jest, Cypress and more, and provide an extensive suite of commands to lint, test, serve, and build applications. Here's a great 10 minute video that walks through what nx can do.
Structure
Notes
Through ESLint, the following rules apply:
- libs/shared can be imported to any app OR lib
- libs/server can be imported to server and workers apps
- libs/client can be imported to client app
- libs/client/shared can be imported to any libs/client/features
- libs/server/shared can be imported to any libs/server/features
apps/
client/
server/
workers/
libs/
design-system/
client/
src/
features/
{feature1-name}/
{feature2-name}/
shared/
server/
src/
features/
{feature1-name}/
{feature2-name}/
shared/
shared/
src/
features/
{feature1-name}/
{feature2-name}/
utils/
types/
Decision Tree
⚠️ Everything below is archived from the original repo and we're slowly working to replace/update it.
Quick Start
For an overview of this repository, please see the wiki
System Prerequisites
- Docker (if not using Docker, you will need Node LTS 14.7.x and Postgres 13.x)
- (Optional, highly recommended) - Install the NX Console for using the nx client
Run the app locally
Setup ENV
cp .env.example .env
A working local development .env
file can be found in 1Password under the "Engineering" folder.
With Docker (preferred)
Start server and client apps
yarn install
yarn dev
Migrate DB
In a separate terminal, run the following command. This will connect to the Postgres DB running inside Docker and run all the migrations in /prisma/migrations
.
yarn prisma:migrate
You will also want to seed the database (includes account types and subtypes for categorization).
yarn prisma:seed
Manually
NOTE: Make sure Postgres 13.x is running on your machine
yarn install
nx serve client # Terminal 1
nx serve server # Terminal 2
yarn prisma:migrate && yarn prisma:seed # Terminal 3 - after apps are running
Reference
Deployments and CI/CD
See this wiki page for an overview of how deployments work.
Authentication
See this wiki page for an explanation of how authentication/authorization works in this codebase.
BullMQ Message Queue
See this wiki page for an overview of BullMQ and how it is used within the repo.
Feature Flags
See this wiki page for an overview of how we use feature flags.
Testing Intercom Locally
yarn dev:services:all
yarn dev
ngrok http --region=us --hostname=localhost.maybe.co 4200
Visit https://localhost.maybe.co