Skip to main content
This comprehensive guide walks you through installing and configuring BudgetView on your local machine for development or self-hosting.

Overview

BudgetView is a modern full-stack application that requires:
  • Node.js runtime for the Next.js server
  • Supabase account for authentication and PostgreSQL database
  • Environment variables to connect to your Supabase project
Installation takes approximately 10-15 minutes, including Supabase project setup.

Prerequisites

Before you begin, ensure your system meets these requirements:

System Requirements

Node.js

Version: 18.x or higher (25.x recommended)Verify installation:
node -v

npm

Version: Automatically installed with Node.jsVerify installation:
npm -v

Git

Required for: Cloning the repositoryVerify installation:
git --version

Text Editor

Recommended: VS Code, Cursor, or any code editorFor editing .env.local configuration

Operating System Support

Supported Versions: macOS 10.15 (Catalina) or laterInstall Node.js via Homebrew:
brew install node
Internet connection required for downloading dependencies and connecting to Supabase cloud services.

Step 1: Clone the Repository

Get the BudgetView source code from GitHub:
git clone https://github.com/Rolando0408/BudgetView-MonySaver-Cheap-Version
Navigate to the project directory:
cd BudgetView-MonySaver-Cheap-Version
If you don’t have Git installed, you can download the repository as a ZIP file from GitHub and extract it.

Step 2: Install Dependencies

BudgetView uses npm to manage its dependencies. Install all required packages:
npm install
This command installs the following key dependencies:
  • next (16.0.3) - React framework with App Router
  • react (19.2.0) - UI library
  • react-dom (19.2.0) - React DOM rendering
  • tailwindcss (4.x) - Utility-first CSS framework
  • lucide-react (0.553.0) - Icon library
  • @radix-ui/react-dialog - Accessible dialog components
  • @radix-ui/react-dropdown-menu - Dropdown menus
  • @radix-ui/react-popover - Popover components
  • @radix-ui/react-select - Select dropdowns
  • react-day-picker (9.11.3) - Date picker
  • @supabase/supabase-js (2.81.1) - Supabase client for authentication and database
  • recharts (3.4.1) - Chart library for dashboard analytics
  • date-fns (4.1.0) - Date manipulation
  • jspdf (3.0.4) - PDF generation for exports
  • clsx & tailwind-merge - Conditional CSS class merging
The installation typically takes 2-5 minutes depending on your internet connection.
{
  "dependencies": {
    "@supabase/supabase-js": "^2.81.1",
    "next": "16.0.3",
    "react": "19.2.0",
    "react-dom": "19.2.0",
    "tailwindcss": "^4",
    "recharts": "^3.4.1",
    "date-fns": "^4.1.0",
    "jspdf": "^3.0.4"
  },
  "devDependencies": {
    "typescript": "^5",
    "@types/node": "^20",
    "@types/react": "^19",
    "eslint": "^9",
    "eslint-config-next": "16.0.3"
  }
}

Step 3: Set Up Supabase

BudgetView uses Supabase for:
  • User authentication (email/password and OAuth)
  • PostgreSQL database storage
  • Row Level Security (RLS) for data privacy
1

Create a Supabase Account

  1. Go to supabase.com
  2. Click “Start your project”
  3. Sign up with GitHub, Google, or email
  4. Verify your email if required
2

Create a New Project

  1. Click “New Project” in your Supabase dashboard
  2. Fill in the project details:
    • Name: BudgetView (or your preferred name)
    • Database Password: Generate a strong password and save it securely
    • Region: Choose the closest region to your users
    • Pricing Plan: Free tier is sufficient for development
  3. Click “Create new project”
Project creation takes 1-2 minutes. You’ll see a loading screen while Supabase provisions your database.
3

Get Your API Credentials

Once your project is ready:
  1. Navigate to Project Settings (gear icon in the sidebar)
  2. Click “API” under Configuration
  3. Locate these two values:
Project URL:
https://your-project-id.supabase.co
anon/public key (under “Project API keys”):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Keep your service_role key private! Never commit it to version control or expose it in client-side code. BudgetView only uses the anon public key.

Configure Database Tables

BudgetView requires specific database tables and RLS policies. You have two options:
For the complete database schema and RLS policies, refer to the Architecture Documentation.

Step 4: Configure Environment Variables

BudgetView requires environment variables to connect to your Supabase project.
1

Create .env.local File

In the root directory of your project, create a new file named .env.local:
touch .env.local
Or create it manually in your file explorer.
2

Add Supabase Credentials

Open .env.local in your text editor and add:
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-anon-public-key-here
Replace the values with your actual credentials from Step 3.
3

Verify Configuration

The Supabase client initialization code:
lib/supabaseClient.ts
import { createClient } from '@supabase/supabase-js'

const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL!
const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY!

export const supabase = createClient(supabaseUrl, supabaseKey)
This code reads your environment variables and creates an authenticated Supabase client.

Environment Variable Reference

VariableDescriptionWhere to FindRequired
NEXT_PUBLIC_SUPABASE_URLYour Supabase project URLProject Settings → API → Project URL✅ Yes
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYAnon/public API keyProject Settings → API → anon public key✅ Yes
Security Best Practices:
  • Never commit .env.local to version control (it’s in .gitignore by default)
  • Use the anon public key, NOT the service_role key
  • Rotate keys immediately if accidentally exposed
  • Use Supabase RLS policies to protect data, not key secrecy

Step 5: Run the Application

Now you’re ready to start BudgetView!

Development Mode

For local development with hot-reload:
npm run dev
Expected output:
▲ Next.js 16.0.3
- Local:        http://localhost:3000
- Network:      http://192.168.1.100:3000

✓ Ready in 2.3s
The development server starts on port 3000 by default. If this port is in use, Next.js will automatically try the next available port (3001, 3002, etc.).

Production Mode

For production deployment:
1

Build the Application

npm run build
This command:
  • Compiles TypeScript to JavaScript
  • Optimizes React components
  • Generates static pages where possible
  • Creates production bundles
Expected output:
▲ Next.js 16.0.3

✓ Creating an optimized production build
✓ Compiled successfully
✓ Collecting page data
✓ Generating static pages (12/12)
✓ Finalizing page optimization

Route (app)                              Size     First Load JS
┌ ○ /                                    142 B          87.2 kB
├ ○ /dashboard                           8.2 kB         95.4 kB
├ ○ /dashboard/billeteras                12.1 kB        99.3 kB
└ ○ /dashboard/transacciones             15.3 kB        102.5 kB

○ (Static) prerendered as static content
2

Start the Production Server

npm start
The application will be available at http://localhost:3000

Custom Port Configuration

To run on a different port:
PORT=4000 npm run dev

Verify Installation

Confirm everything is working correctly:
1

Access the Application

Open your browser and navigate to:
http://localhost:3000
You should see the BudgetView login page.
2

Test Authentication

Try creating a new account:
  1. Click “Regístrate” (Sign up)
  2. Enter an email and password
  3. Submit the form
  4. Check for the verification email
Or test Google OAuth:
  1. Click “Continúa con Google”
  2. Select your Google account
  3. Verify you’re redirected to the dashboard
3

Check Database Connection

In your Supabase dashboard:
  1. Go to DatabaseTables
  2. Select the usuarios table
  3. Verify your user record appears after signup
If you don’t see database tables, review the SQL schema setup in Step 3.

Troubleshooting

Solution: Dependencies not installed.
rm -rf node_modules package-lock.json
npm install
Cause: Environment variables not set correctly.Solution:
  1. Verify .env.local exists in the project root
  2. Check for typos in variable names (must be exact)
  3. Ensure values are correct from your Supabase dashboard
  4. Restart the dev server after changes:
    # Stop server (Ctrl+C), then:
    npm run dev
    
Solution: Another application is using port 3000.Option A - Use a different port:
PORT=3001 npm run dev
Option B - Find and stop the conflicting process:
# macOS/Linux
lsof -ti:3000 | xargs kill -9

# Windows PowerShell
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
Solution: Ensure you’re using compatible Node.js and npm versions.
node -v  # Should be 18.x or higher
npm -v   # Should be 9.x or higher
Update if necessary:
npm install -g npm@latest
Causes:
  • Network firewall blocking Supabase API
  • Corporate proxy interfering
  • Supabase project paused (free tier inactivity)
Solutions:
  1. Check Supabase project status in dashboard
  2. Verify internet connection
  3. Test Supabase connectivity:
    curl https://your-project-id.supabase.co
    
  4. Check for proxy settings that need configuration
Solution: Re-run the database migration SQL.
  1. Go to Supabase SQL Editor
  2. Delete existing tables (if present):
    DROP TABLE IF EXISTS public.presupuestos CASCADE;
    DROP TABLE IF EXISTS public.transacciones CASCADE;
    DROP TABLE IF EXISTS public.categorias CASCADE;
    DROP TABLE IF EXISTS public.billeteras CASCADE;
    
  3. Re-run the complete schema creation SQL from Step 3

Next Steps

Now that BudgetView is running:

Quickstart Guide

Learn how to create your first wallet and transaction

Feature Documentation

Explore all BudgetView features in detail

API Reference

Understand the database schema and Supabase queries

Deployment Guide

Deploy BudgetView to Vercel, Netlify, or your own server

Additional Resources


Development Scripts Reference

Available npm scripts defined in package.json:
{
  "scripts": {
    "dev": "next dev",           // Start development server with hot-reload
    "build": "next build",       // Create production build
    "start": "next start",       // Start production server
    "lint": "eslint"             // Run ESLint code quality checks
  }
}
Usage examples:
# Development
npm run dev

# Production build and start
npm run build
npm start

# Code quality check
npm run lint
Use npm run dev during development for instant feedback. Only run npm run build when preparing for deployment or testing production behavior.

Build docs developers (and LLMs) love