Mony is a budgeting app designed for the New Zealand market.
Currently, it's a personal project, but if it gets good enough then we'll see what we can do about allowing more users.
Mony is a Remix-based Jamstack website, deployed via Vercel. Setup is very easy :)
- Clone the repo
git clone https://github.com/alexsurelee/mony.git
- Install dependencies
cd mony
npm install
- Set up environment variables
Create a .env
touch .env
You'll need the following environment variables:
Name | Value |
---|---|
CLERK_FRONTEND_API | ... |
CLERK_API_KEY | ... |
CLERK_JWT_KEY | ... |
AKAHU_APP_TOKEN | ... |
AKAHU_USER_TOKEN | ... |
SUPABASE_URL | ... |
SUPABASE_KEY | ... |
- Run the development server
npm run dev
You're good to go! The app will be running on http://localhost:3000/, unless this port is already occupied.
Mony uses Supabase for its backend, meaning you might want to create your own backend instance for testing purposes.
Follow the Local Development guide to get your own Docker instance running.
Mony uses Remix as its React framework of choice. This brings with it some opinionated standards, designed for optimisation on the web.
To support advanced styling features whilst remaining within Remix's guidance for styling, Sass is used as the preprocesser of choice. This allows for compilation to route or component-specific css files, enhancing performance.
Files can be found under styles/
- this includes components/
and routes/
, alongside some tokens.
Compiled sass moves under app/styles/
, these should not be touched directly and are included in the .gitignore
.
PostCSS is used to add autoprefixer support. This helps to reduce the need for repeating styles for cross-platform support, as this is done for us at compilation time.
Mony uses Akahu APIs in order to obtain access to New Zealand-based accounts. These include most major banks, IRD, and some investment platforms like Simplicity & Sharesies.
To assist with secure authentication, Mony uses Clerk for user authentication and management.
Mony uses Supabase for its database.