Skip to content

Commit

Permalink
Merge branch 'main' of github.com:maybe-finance/maybe into csv-import…
Browse files Browse the repository at this point in the history
…s-part-1
  • Loading branch information
zachgoll committed May 10, 2024
2 parents 822a19d + 61fae96 commit 9cf9cc5
Show file tree
Hide file tree
Showing 12 changed files with 243 additions and 169 deletions.
12 changes: 8 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Custom port config
# For users who have other applications listening at 3000, this allows them to set a value puma will listen to.
PORT=

# Exchange Rate API
# This is used to convert between different currencies in the app. We use Synth, which is a Maybe product. You can sign up for a free account at synthfinance.com.
SYNTH_API_KEY=
Expand Down Expand Up @@ -54,7 +58,7 @@ SECRET_KEY_BASE=secret-value
# UPGRADES_MODE: Controls how the app will upgrade. `manual` means the user must manually upgrade the app. `auto` means the app will upgrade automatically (great for self-hosting)
# UPGRADES_TARGET: Controls what the app will upgrade to. `release` means the app will upgrade to the latest release. `commit` means the app will upgrade to the latest commit.
#
UPGRADES_ENABLED=false # unless editing the flow, you should keep this `false` locally in development
UPGRADES_ENABLED=false # unless editing the flow, you should keep this `false` locally in development
UPGRADES_MODE=manual # `manual` or `auto`
UPGRADES_TARGET=release # `release` or `commit`

Expand All @@ -63,15 +67,15 @@ UPGRADES_TARGET=release # `release` or `commit`
# Git Repository Module - responsible for fetching latest commit data for upgrades
# ======================================================================================================
#
GITHUB_REPO_OWNER=maybe-finance
GITHUB_REPO_OWNER=maybe-finance
GITHUB_REPO_NAME=maybe
GITHUB_REPO_BRANCH=main

# ======================================================================================================
# Active Storage Configuration - responsible for storing file uploads
# ======================================================================================================
#
# * Defaults to disk storage but you can also use Amazon S3, Google Cloud Storage, or Microsoft Azure Storage.
# * Defaults to disk storage but you can also use Amazon S3, Google Cloud Storage, or Microsoft Azure Storage.
# * Set the appropriate environment variables to use these services.
# * Ensure libvips is installed on your system for image processing - https://github.com/libvips/libvips
#
Expand All @@ -81,4 +85,4 @@ GITHUB_REPO_BRANCH=main
# S3_ACCESS_KEY_ID=
# S3_SECRET_ACCESS_KEY=
# S3_REGION= # defaults to `us-east-1` if not set
# S3_BUCKET=
# S3_BUCKET=
7 changes: 6 additions & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@
name: Bug report
about: Create a report to help us improve
title: 'Bug: '
labels: ":bug: Bug"
labels: ":bug: Bug, :rocket: Feature"
assignees: ''

---

**Where did this bug occur?**

- [ ] Local development
- [ ] Self hosted app (i.e. Docker)

**Describe the bug**
A clear and concise description of what the bug is.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
---
name: Feature Spec
about: A fully scoped feature that is ready to be worked on.
name: Feature Specification
about: A fully scoped feature with designs, requirements, and implementation plan
title: 'Feature: '
labels: ":rocket: Feature"
assignees: ''

---

_If your feature requires designs, UI changes, or input from the Maybe team, you should open a feature request instead. This template is for a **fully scoped and ready** feature. _

## Feature Overview

## Requirements
Expand Down
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: 'Feature Request: '
labels: ":bulb: Feature Request"
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
76 changes: 46 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,35 @@

# Maybe: The OS for your personal finances

<b>Get involved: [Discord](https://link.maybe.co/discord)[Website](https://maybe.co)[Issues](https://github.com/maybe-finance/maybe/issues)</b>
<b>Get
involved: [Discord](https://link.maybe.co/discord)[Website](https://maybe.co)[Issues](https://github.com/maybe-finance/maybe/issues)</b>

_If you're looking for the previous React codebase, you can find it at [maybe-finance/maybe-archive](https://github.com/maybe-finance/maybe-archive)._
_If you're looking for the previous React codebase, you can find it
at [maybe-finance/maybe-archive](https://github.com/maybe-finance/maybe-archive)._

## 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).
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 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.
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.

## Self Hosting
## Maybe Hosting

You can find [detailed setup guides for self hosting here](docs/self-hosting.md).
There are 3 primary ways to use the Maybe app:

### One-Click Render deploy (recommended)

<a href="https://render.com/deploy?repo=https://github.com/maybe-finance/maybe">
<img src="https://render.com/images/deploy-to-render-button.svg" alt="Deploy to Render" />
</a>

1. Click the button above
2. Follow the instructions in the [Render self-hosting guide](docs/self-hosting/render.md)

### Docker

To host Maybe with Docker Compose, please follow our [Docker self-hosting guide](docs/self-hosting/docker.md).
1. Managed (easiest) - _coming soon..._
2. [One-click deploy](docs/hosting/one-click-deploy.md)
3. [Self-host with Docker](docs/hosting/docker.md)

## Local Development Setup

Expand All @@ -53,7 +52,8 @@ bin/dev
rake demo_data:reset
```

And visit http://localhost:3000 to see the app. You can use the following credentials to log in (generated by DB seed):
And visit http://localhost:3000 to see the app. You can use the following
credentials to log in (generated by DB seed):

- Email: `[email protected]`
- Password: `password`
Expand All @@ -64,43 +64,59 @@ For further instructions, see guides below.

If you'd like multi-currency support, there are a few extra steps to follow.

1. Sign up for an API key at [Synth](https://synthfinance.com). It's a Maybe product and the free plan is sufficient for basic multi-currency support.
1. Sign up for an API key at [Synth](https://synthfinance.com). It's a Maybe
product and the free plan is sufficient for basic multi-currency support.
2. Add your API key to your `.env` file.

### Setup Guides

#### Dev Container (optional)

This is 100% optional and meant for devs who don't want to worry about installing requirements manually for their platform. You can follow [this guide](https://code.visualstudio.com/docs/devcontainers/containers) to learn more about Dev Containers.
This is 100% optional and meant for devs who don't want to worry about
installing requirements manually for their platform. You can
follow [this guide](https://code.visualstudio.com/docs/devcontainers/containers)
to learn more about Dev Containers.

If you run into `could not connect to server` errors, you may need to change your `.env`'s `DB_HOST` environment variable value to `db` to point to the Postgres container.
If you run into `could not connect to server` errors, you may need to change
your `.env`'s `DB_HOST` environment variable value to `db` to point to the
Postgres container.

#### Mac

Please visit our [Mac dev setup guide](https://github.com/maybe-finance/maybe/wiki/Mac-Dev-Setup-Guide).
Please visit
our [Mac dev setup guide](https://github.com/maybe-finance/maybe/wiki/Mac-Dev-Setup-Guide).

#### Linux

Please visit our [Linux dev setup guide](https://github.com/maybe-finance/maybe/wiki/Linux-Dev-Setup-Guide).
Please visit
our [Linux dev setup guide](https://github.com/maybe-finance/maybe/wiki/Linux-Dev-Setup-Guide).

#### Windows

Please visit our [Windows dev setup guide](https://github.com/maybe-finance/maybe/wiki/Windows-Dev-Setup-Guide).
Please visit
our [Windows dev setup guide](https://github.com/maybe-finance/maybe/wiki/Windows-Dev-Setup-Guide).

### Testing Emails

In development, we use `letter_opener` to automatically open emails in your browser. When an email sends locally, a new browser tab will open with a preview.
In development, we use `letter_opener` to automatically open emails in your
browser. When an email sends locally, a new browser tab will open with a
preview.

## Contributing

Before contributing, you'll likely find it helpful to [understand context and general vision/direction](https://github.com/maybe-finance/maybe/wiki).
Before contributing, you'll likely find it helpful
to [understand context and general vision/direction](https://github.com/maybe-finance/maybe/wiki).

Once you've done that, please visit our [contributing guide](https://github.com/maybe-finance/maybe/blob/main/CONTRIBUTING.md) to get started!
Once you've done that, please visit
our [contributing guide](https://github.com/maybe-finance/maybe/blob/main/CONTRIBUTING.md)
to get started!

## Repo Activity

![Repo Activity](https://repobeats.axiom.co/api/embed/7866c9790deba0baf63ca1688b209130b306ea4e.svg "Repobeats analytics image")

## Copyright & license

Maybe is distributed under an [AGPLv3 license](https://github.com/maybe-finance/maybe/blob/main/LICENSE). "Maybe" is a trademark of Maybe Finance, Inc.
Maybe is distributed under
an [AGPLv3 license](https://github.com/maybe-finance/maybe/blob/main/LICENSE). "
Maybe" is a trademark of Maybe Finance, Inc.
4 changes: 1 addition & 3 deletions config/cable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,4 @@ test:
adapter: test

production:
adapter: redis
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
channel_prefix: maybe_production
adapter: postgresql
2 changes: 1 addition & 1 deletion config/environments/development.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@

config.action_mailer.perform_deliveries = true

config.action_mailer.default_url_options = { host: "localhost", port: 3000 }
config.action_mailer.default_url_options = { host: "localhost", port: ENV.fetch("PORT") { 3000 } }

# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
Expand Down
14 changes: 9 additions & 5 deletions docker-compose.example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@ services:

app:
image: ghcr.io/maybe-finance/maybe:latest
volumes:
- ./storage:/rails/storage
ports:
- 127.0.0.1:3000:3000
restart: unless-stopped
env_file:
- .env
environment:
DB_HOST: "postgres"
RAILS_ENV: "production"
SELF_HOSTING_ENABLED: true
DB_HOST: postgres
RAILS_FORCE_SSL: false
RAILS_ASSUME_SSL: false
POSTGRES_USER: postgres
GOOD_JOB_EXECUTION_MODE: async
depends_on:
postgres:
condition: service_healthy
Expand All @@ -22,8 +26,8 @@ services:
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${POSTGRES_USER:?}
POSTGRES_DB: ${POSTGRES_DB:-postgres}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_DB: ${POSTGRES_DB:-maybe_production}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?}
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U $$POSTGRES_USER" ]
Expand All @@ -32,4 +36,4 @@ services:
retries: 5

volumes:
postgres-data:
postgres-data:
104 changes: 104 additions & 0 deletions docs/hosting/docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# Self Hosting Maybe with Docker

## Quick Start

_The below quickstart assumes you're running on Mac or Linux. Windows will
be different._

Make sure [Docker is installed](https://docs.docker.com/engine/install/) and
setup your local environment:

```bash
# Create a directory on your computer for Docker files
mkdir -p ~/docker-apps/maybe
cd ~/docker-apps/maybe

# Download the sample docker-compose.yml file from the Maybe Github repository
curl -o docker-compose.yml https://raw.githubusercontent.com/maybe-finance/maybe/main/docker-compose.example.yml

# Create an .env file (make sure to fill in empty variables manually)
cat << EOF > .env
# Use "openssl rand -hex 64" to generate this
SECRET_KEY_BASE=
# Can be any value, set to what you'd like
POSTGRES_PASSWORD=
EOF
```

Make sure to generate your `SECRET_KEY_BASE` value and save the `.env` file.
Then you're ready to run the app, which will be available at
`http://localhost:3000` in your browser:

```bash
docker-compose up -d
```

Lastly, go to `http://localhost:3000` in your browser, **create a new
account**, and you're ready to start tracking your finances!

## Detailed Setup Guide

### Prerequisites

- Install Docker Engine by
following [the official guide](https://docs.docker.com/engine/install/)
- Start the Docker service on your machine

### App Setup

1. Create a new directory on your machine (we suggest something like
`$HOME/docker-apps/maybe`)
2. Create a `docker-compose.yml` file (we suggest
using [our example](/docker-compose.example.yml)
if
you're new to self-hosting and Docker)
3. Create a `.env` file and add the required variables. Currently,
`SECRET_KEY_BASE` is the only required variable, but you can take a look
at our [.env.example](/.env.example) file to see all available options.

### Run app with Docker Compose

1. Run `docker-compose up -d` to start the maybe app in detached mode.
2. Access the Maybe app by navigating to http://localhost:3000 in your web
browser.

### Updating the App

The mechanism that updates your self-hosted Maybe app is the GHCR (Github
Container Registry) Docker image that you see in the `docker-compose.yml` file:

```yml
image: ghcr.io/maybe-finance/maybe:latest
```
We recommend using one of the following images, but you can pin your app to
whatever version you'd like (
see [packages](https://github.com/maybe-finance/maybe/pkgs/container/maybe)):
- `ghcr.io/maybe-finance/maybe:latest` (latest commit)
- `ghcr.io/maybe-finance/maybe:stable` (latest release)

By default, your app _will NOT_ automatically update. To update your
self-hosted app, you must run the following commands:

```bash
docker-compose pull # This pulls the "latest" published image from GHCR
docker-compose up -d # Restarts the app
```

#### Changing the image

If you'd like to pin the app to a specific version or tag, all you need to do is
edit the `docker-compose.yml` file:

```yml
image: ghcr.io/maybe-finance/maybe:stable
```

## Troubleshooting

This section will provide troubleshooting tips and solutions for common issues
encountered during deployment. Check back later for updates!

Loading

0 comments on commit 9cf9cc5

Please sign in to comment.