A simple expense organizer app built with Ruby on Rails and SQLite. This app is designed for personal use, allowing users to track and manage their monthly expenses.
- Expense Tracking: Log your daily expenses and categorize them for better organization.
- Monthly Overview: Get a summary of your monthly spending with a clear breakdown of categories.
- Flexible Deployment: Run the app locally or deploy it on your favorite cloud platform.
- For Local Development:
- Ruby 3.3+
- SQLite 3
- Bundler gem
- For Docker Deployment:
- Clone the repository:
git clone https://github.com/mtayllan/finb.git
cd finb- Install dependencies:
bundle install- Setup the database:
bin/rails db:setup- (Optional) Configure Groq API for PDF import:
cp .env.example .env
# Edit .env and add your Groq API key:
# GROQ_API_KEY=your_api_key_hereGet your free API key at console.groq.com
- Start the development server:
bin/dev- Access the application at http://localhost:3000
- Clone the repository:
git clone https://github.com/mtayllan/finb.git
cd finb- Build the Docker image:
docker build -t finb .- Run the container:
docker run \
-d -p 9090:3000 \
--name finb \
-v finb-storage:/rails/storage \
--env SECRET_KEY_BASE=$YOUR_SECRET_KEY_BASE \
--env USE_SSL=false \
--env GROQ_API_KEY=$YOUR_GROQ_API_KEY \
finbNotes:
- Generate a random secret key base with
openssl rand -hex 64and replace$YOUR_SECRET_KEY_BASEwith the generated value. - (Optional) Add your Groq API key to enable PDF import feature. Get a free key at console.groq.com and replace
$YOUR_GROQ_API_KEYwith your key. If you don't need PDF import, you can omit the--env GROQ_API_KEYline.
- Access the application at http://localhost:9090
- Pull the latest changes:
git pull origin main- Rebuild the Docker image:
docker build -t finb .- Stop and remove the old container:
docker stop finb
docker rm finb- Start the new container using the same
docker runcommand from step 3 above.
This project is licensed under the MIT License - see the LICENSE file for details.
If you have any feedback, feel free to open a new Issue and we can discuss!