Giter Site home page Giter Site logo

jagveer-gandhi / maybe Goto Github PK

View Code? Open in Web Editor NEW

This project forked from maybe-finance/maybe-archive

0.0 0.0 0.0 6.67 MB

License: GNU Affero General Public License v3.0

Shell 0.38% JavaScript 0.78% TypeScript 94.64% CSS 0.34% HTML 0.40% PLpgSQL 3.02% Dockerfile 0.12% EJS 0.08% MDX 0.26%

maybe's Introduction

๐Ÿšจ NOTE: This codebase is no longer being maintained. The repo we're actively working on is located at maybe-finance/maybe.


Maybe: Open-source personal finance app

Get involved: Discord โ€ข Website โ€ข Issues

Backstory

We spent the better part of 2021/2022 building a personal finance + wealth management app called, Maybe. Very full-featured, including an "Ask an Advisor" feature which connected users with an actual CFP/CFA to help them with their finances (all included in your subscription).

The business end of things didn't work out, and so we shut things down mid-2023.

We spent the better part of $1,000,000 building the app (employees + contractors, data providers/services, infrastructure, etc.).

We're now reviving the product as a fully open-source project. The goal is to let you run the app yourself, for free, and use it to manage your own finances and eventually offer a hosted version of the app for a small monthly fee.

End goal

Ultimately we want to rebuild this so that you can self-host, but we also have plans to offer a hosted version for a fee. That means some decisions will be made that don't explicitly make sense for self-hosted but do support the goal of us offering a for-pay hosted version.

Features

As a personal finance + wealth management app, Maybe has a lot of features. Here's a brief overview of some of the main ones...

  • Net worth tracking
  • Financial account syncing
  • Investment benchmarking
  • Investment portfolio allocation
  • Debt insights
  • Retirement forecasting + planning
  • Investment return simulation
  • Manual account/investment tracking

And dozens upon dozens of smaller features.

Getting started

This is the current state of building the app. We're actively working to make this process much more streamlined!

You'll need Docker installed to run the app locally. Docker Desktop is an easy way to get started.

First, copy the .env.example file to .env:

cp .env.example .env

Then, create a new secret using openssl rand -base64 32 and populate NEXTAUTH_SECRET in your .env file with it.

To enable transactional emails, you'll need to create a Postmark account and add your API key to your .env file (NX_EMAIL_PROVIDER_API_TOKEN) and set NX_EMAIL_PROVIDER to postmark. You can also set the from and reply-to email addresses (NX_EMAIL_FROM_ADDRESS and NX_EMAIL_REPLY_TO_ADDRESS). If you want to run the app without email, you can set NX_EMAIL_PROVIDER_API_TOKEN to a dummy value or leave NX_EMAIL_PROVIDER blank. We also support SMTP for sending emails, see information about configuring environment variables in the .env.example file.

Maybe uses Teller for connecting financial accounts. To get started with Teller, you'll need to create an account. Once you've created an account:

  • Add your Teller application id to your .env file (NEXT_PUBLIC_TELLER_APP_ID).
  • Download your authentication certificates from Teller, create a certs folder in the root of the project, and place your certs in that directory. You should have both a certificate.pem and private_key.pem. NEVER check these files into source control, the .gitignore file will prevent the certs/ directory from being added, but please double-check.
  • Set your NEXT_PUBLIC_TELLER_ENV and NX_TELLER_ENV to your desired environment. The default is sandbox which allows for testing with mock data. The login credentials for the sandbox environment are username and password. To connect to real financial accounts, you'll need to use the development environment.
  • Webhooks are not implemented yet, but you can populate the NX_TELLER_SIGNING_SECRET with the value from your Teller account.
  • We highly recommend checking out the Teller docs for more info.

Then run the following pnpm commands:

pnpm install
pnpm run dev:services:all
pnpm prisma:migrate:dev
pnpm prisma:seed
pnpm dev

Set Up Ngrok

External data providers require HTTPS/SSL webhook URLs for sending data.

To test this locally/during development, you will need to setup ngrok.

  1. Visit ngrok.com
  2. Create a free account
  3. Visit this page to access your auth token
  4. Paste it into your .env file: NGROK_AUTH_TOKEN=your_auth_token

You should claim your free static domain to avoid needing to change the URL each time you start/stop the server.

To do so:

  1. Visit the domains page
  2. Click on Create Domain
  3. Copy the domain and paste it into your .env file: NGROK_DOMAIN=your_domain

That's it! As long as you run the project locally using docker with pnpm dev:services:all you'll be good to go.

External data

To pull market data in (for investments), you'll need a Polygon.io API key. You can get one for free here and then add it to your .env file (NX_POLYGON_API_KEY). Note: If you're using the free "basic" plan, you'll need to manually sync stock tickers using the dev tools in the app the first time you run it. It will then be re-synced automatically every 24 hours. If you're using a paid tier, be sure to update your .env file with the correct tier (NX_POLYGON_API_TIER) and tickers and pricing will be synced automatically.

Tech stack

  • Next.js
  • Tailwind
  • Node.js
  • Express
  • Postgres (w/ Timescale)

Credits

The original app was built by Zach Gollwitzer, Nick Arciero and Tim Wilson, with design work by Justin Farrugia.

Copyright & license

Maybe is distributed under an AGPLv3 license. "Maybe" is a trademark of Maybe Finance, Inc.

maybe's People

Contributors

tmyracle avatar shpigford avatar crnsh avatar 6ixfalls avatar michaeldeboey avatar simonbukin avatar anthonyshew avatar neumand avatar codewithshreyans avatar eneskaya avatar bartoszjarocki avatar samuelfanawopo avatar shyrynaz avatar sy425191 avatar ikraamdaanis avatar coltonehrman avatar ductilestudios avatar greek avatar danm72 avatar eduardse avatar giuseppecutuli avatar jbolda avatar kevinguebert avatar larswmh avatar silver343 avatar 0xdirective avatar choeqq 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.