Skip to content

CarlosSimon02/finora

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° Finora - Personal Finance Management

Welcome to Finora! A comprehensive personal finance management tool that helps you track your income and expenses, set budgets, and save for your future. Take control of your financial life with intuitive insights and powerful management features.

🌐 Live Demo: finora-official.vercel.app

Finora App Screenshot


✨ Features

  • πŸ” Authentication & Authorization

    • Email/Password authentication
    • Google Sign-In integration
    • Email verification
    • Password reset functionality
    • Secure session management
  • πŸ“Š Dashboard Overview

    • Comprehensive financial overview
    • Visual charts and analytics
    • Real-time balance tracking
    • Spending insights
  • πŸ’³ Transaction Management

    • Add, edit, and delete transactions
    • Categorize expenses and income
    • Advanced filtering and search
    • Recurring transactions support
  • πŸ’° Budget Tracking

    • Create custom budgets by category
    • Track spending against budget limits
    • Visual budget progress indicators
    • Budget utilization alerts
  • πŸ“ˆ Income Management

    • Track multiple income sources
    • Recurring income support
    • Income categorization
    • Income history and trends
  • 🏺 Savings Pots

    • Create savings goals
    • Track progress toward goals
    • Add/withdraw from pots
    • Visual savings progress
  • πŸ‘€ Account Management

    • User profile customization
    • Account settings
    • Data management

πŸ› οΈ Tech Stack

Frontend

Backend & Database

API & Data Fetching

  • πŸ”Œ tRPC - End-to-end typesafe APIs
  • πŸ”„ TanStack Query - Powerful data synchronization
  • πŸ“¦ SuperJSON - JSON serialization

Form Management & Validation

  • πŸ“ React Hook Form - Performant forms
  • βœ… Zod - TypeScript-first schema validation

Development Tools


πŸš€ Getting Started

Prerequisites

Make sure you have the following installed on your machine:

  • Node.js version 20.0.0 or higher
  • npm (comes with Node.js)

Installation

  1. Clone the repository
git clone https://github.com/CarlosSimon02/finora.git
cd finora
  1. Install dependencies
npm install
  1. Set up environment variables

Create a .env.local file in the root directory and add your environment variables. Use the .env.example file as a reference:

cp .env.example .env.local

Then, fill in your Firebase configuration and other required variables:

##############################
# πŸ”₯ FIREBASE CONFIGURATION
##############################

FIREBASE_CLIENT_EMAIL="your-firebase-client-email"
FIREBASE_PRIVATE_KEY="your-firebase-private-key"

##############################
# πŸ”₯ CLIENT-SIDE FIREBASE CONFIGURATION
##############################

NEXT_PUBLIC_FIREBASE_API_KEY="your-firebase-api-key"
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN="your-firebase-auth-domain"
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID="your-messaging-sender-id"
NEXT_PUBLIC_FIREBASE_APP_ID="your-firebase-app-id"
NEXT_PUBLIC_FIREBASE_PROJECT_ID="your-firebase-project-id"
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET="your-firebase-storage-bucket"

##############################
# ⚑ CLIENT-SIDE EMULATOR SETTINGS (For Local Development)
##############################

NEXT_PUBLIC_IS_USING_EMULATORS="false"  # Set to true if using Firebase emulators
NEXT_PUBLIC_EMULATOR_HOST="localhost"
NEXT_PUBLIC_FIRESTORE_EMULATOR_PORT="8080"
NEXT_PUBLIC_STORAGE_EMULATOR_PORT="9199"
NEXT_PUBLIC_FUNCTIONS_EMULATOR_PORT="5001"
NEXT_PUBLIC_AUTH_EMULATOR_HOST="localhost:9199"

##############################
# 🌯 Next Firebase Auth Edge Configuration
##############################

USE_SECURE_COOKIES=false
COOKIE_SECRET_CURRENT="your-secret-current"
COOKIE_SECRET_PREVIOUS="your-secret-previous"

##############################
# 🌐 General App Configuration
##############################

NEXT_PUBLIC_SITE_URL=http://localhost:3000

Note: To get your Firebase credentials, create a project in the Firebase Console and enable Authentication and Firestore.

  1. Run the development server
npm run dev
  1. Open your browser

Navigate to http://localhost:3000 to see the app in action! πŸŽ‰


🧞 Commands

All commands are run from the root of the project:

Command Action
npm install Installs dependencies
npm run dev Starts local dev server at localhost:3000
npm run build Build your production site to ./.next/
npm run start Preview your build locally, before deploying
npm run lint Run ESLint to check code quality
npm test Run unit tests with Vitest
npm run test:watch Run tests in watch mode
npm run test:ci Run tests with coverage report
npm run test:ui Run tests with UI
npm run storybook Start Storybook on localhost:6006
npm run build-storybook Build Storybook for production
npm run playwright:install Install Playwright browsers for E2E testing

πŸ“ Project Structure

finora/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                  # Next.js App Router pages
β”‚   β”‚   β”œβ”€β”€ (auth)/          # Authentication pages
β”‚   β”‚   └── (front)/         # Main app pages
β”‚   β”œβ”€β”€ core/                # Business logic & use cases
β”‚   β”œβ”€β”€ data/                # Data layer & repositories
β”‚   β”œβ”€β”€ presentation/        # UI components & views
β”‚   β”œβ”€β”€ lib/                 # Utility libraries
β”‚   β”œβ”€β”€ config/              # Configuration files
β”‚   └── types/               # TypeScript type definitions
β”œβ”€β”€ public/                  # Static assets
└── ...config files

πŸ§ͺ Testing

Unit Tests

npm test

Component Development

npm run storybook

🚒 Deployment

The app is deployed on Vercel. Visit the live site at finora-official.vercel.app.

To deploy your own instance:

  1. Push your code to GitHub
  2. Import your repository to Vercel
  3. Add your environment variables in Vercel project settings
  4. Deploy! πŸš€

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


πŸ“„ License

This project is open source and available under the MIT License.


πŸ‘¨β€πŸ’» Developer

Built with ❀️ by Carlos Simon


πŸ™ Acknowledgments


Made with πŸ’™ and β˜•

About

Keep track of your money and save for your future

Topics

Resources

License

Stars

Watchers

Forks

Languages