This repository houses the frontend application for Budget Buddy, a comprehensive personal finance management tool. Built with React and styled with Tailwind CSS, it provides an intuitive interface for users to track their expenses, manage budgets, categorize transactions, and gain insights into their financial health.
- Key Features & Benefits
- Technologies Used
- Prerequisites & Dependencies
- Installation & Setup Instructions
- Usage Examples & Backend Interaction
- πΈ Screenshots
- Configuration Options
- Project Structure
- Contributing Guidelines
- License Information
- Acknowledgments
Budget Buddy Frontend offers a seamless experience for managing your finances:
- Intuitive Dashboard: Get a quick overview of your financial status, upcoming bills, and spending habits.
- Expense & Income Tracking: Easily record and categorize all your financial transactions, differentiating between expenses and income.
- Budget Management: Create and monitor budgets for various categories, helping you stay within your financial limits.
- Category Management: Full control over transaction categories, including adding new ones, editing existing ones, and even assigning emojis for better visual organization.
- User Profile Management: Update your personal information, including profile photo uploads, for a personalized experience.
- Responsive Design: Built with Tailwind CSS, ensuring a consistent and optimal user experience across all devices (desktop, tablet, mobile).
- Real-time Feedback: Utilizes
react-hot-toastto provide instant, non-intrusive feedback for user actions and system notifications. - Modular Component Architecture: A well-organized and scalable codebase using React components, making it easy to understand, maintain, and extend.
The Budget Buddy frontend is built with modern web technologies:
- JavaScript: The primary programming language for the application logic.
- React: A powerful JavaScript library for building user interfaces.
- Vite: A next-generation frontend tooling that provides an extremely fast development experience.
- Tailwind CSS: A utility-first CSS framework for rapidly building custom designs.
- Axios: A promise-based HTTP client for making API requests.
- Emoji Picker React: For adding interactive emoji selection.
- Lucide React: A beautiful, open-source icon library.
- Moment.js: For parsing, validating, manipulating, and formatting dates.
- React Hot Toast: For simple and beautiful notifications.
- React Router Dom: For declarative routing in React applications.
- Node.js: JavaScript runtime environment.
- ESLint: For maintaining code quality and consistency.
Before you begin, ensure you have the following installed on your system:
- Node.js: LTS version recommended
- npm or Yarn: A package manager (npm comes bundled with Node.js).
Follow these steps to get the Budget Buddy frontend application up and running on your local machine:
-
Clone the Repository
git clone https://github.com/SalemNabeelSalem/budget-buddy-application-frontend.git cd budget-buddy-application-frontend -
Install Dependencies
Install all the required project dependencies using npm or Yarn:
npm install # or if you use Yarn # yarn install
-
Environment Configuration
This project uses environment variables, typically for API endpoints or other sensitive settings.
-
Create a
.envfile in the root directory of the project by copying the example:cp .env.example .env
-
Open the newly created
.envfile and configure your variables. A crucial variable will likely be the backend API base URL:VITE_APP_API_BASE_URL="http://localhost:5000/api" # Replace with your backend API URL VITE_CLOUDINARY_CLOUD_NAME={your_cloudinary_cloud_name} # If using Cloudinary for image uploads VITE_CLOUDINARY_UPLOAD_PRESET={your_cloudinary_upload_preset} # If using Cloudinary for image uploads
**Note**: Ensure your backend server is running and accessible at the specified URL.
-
-
Run the Development Server
Start the application in development mode:
npm run dev
The application will typically be available at
http://localhost:5173(or another port if 5173 is in use). Your browser should automatically open to this address. -
Build for Production (Optional)
To create an optimized production build of the application:
npm run build
This command compiles the application into static files in the
dist/directory, ready for deployment. -
Preview Production Build (Optional)
To locally preview the production build:
npm run preview
Once the application is running, users can interact with Budget Buddy through their web browser.
-
General Usage Flow:
- Registration/Login: Users can sign up for a new account or log in with existing credentials.
- Dashboard Access: Upon successful login, users are directed to their personalized dashboard, offering a summary of their financial data.
- Navigation: Users can navigate through different sections like "Transactions," "Budgets," "Categories," and "Profile" using the application's sidebar or navigation menus.
- Data Entry:
- Adding a Transaction: Navigate to the "Add Transaction" section, input details such as amount, description, category, and date.
- Managing Categories: Access the "Categories" section to add new categories (with optional emoji icons), edit existing ones, or delete them.
- Updating Profile: Go to the "Profile" section to change user details or upload a new profile picture.
-
Backend Interaction: This frontend application is designed to interact with a separate backend API to fetch, create, update, and delete financial data. All data persistence and business logic are handled by the backend.
- API Calls:
axiosis used throughout the application to make HTTP requests to theVITE_APP_API_BASE_URLdefined in your.envfile. - Data Flow: User actions on the frontend trigger API calls to the backend. The backend processes these requests, interacts with the database, and sends back responses which the frontend then renders to the user.
- API Calls:
The following UI previews highlight the full user flow, from authentication to transaction management and filtering.
Left: Sign Up page - create a new Budget Buddy account.
Right: Login page - sign in with existing credentials.
Main dashboard with key summaries and financial insights.
Left: Add new category form with emoji picker support.
Right: Categories page for browsing and managing category records.
Update existing category form for quick category edits.
Left: Add new income transaction.
Right: Incomes list page with transaction overview.
Update existing income form with editable transaction fields.
Left: Add new expense transaction.
Right: Expenses list page with reporting actions.
Update existing expense form for transaction maintenance.
Filtering interface to quickly find relevant financial records.
The application uses environment variables for configurable settings, primarily defined in the .env file at the project root.
-
VITE_APP_API_BASE_URL: (Required) This variable defines the base URL of your Budget Buddy backend API. Without this, the frontend will not be able to communicate with the server.# Example .env configuration VITE_APP_API_BASE_URL="http://localhost:5000/api" # Or for a deployed backend: # VITE_APP_API_BASE_URL="https://api.yourbudgetbuddy.com/api"
The project follows a standard React application structure, organized for clarity and maintainability:
βββ .env.example # Example environment variables
βββ .gitignore # Files and directories to ignore in Git
βββ README.md # Project README file
βββ index.html # Main HTML entry point
βββ package-lock.json # Records exact dependency versions
βββ package.json # Project metadata and scripts
βββ src/ # Source code directory
βββ App.css # Global application styles
βββ App.jsx # Main application component
βββ assets/ # Static assets (images, icons, etc.)
βββ images.js # Centralized image imports/exports
βββ login-bg.png # Background image for login
βββ logo.png # Budget Buddy application logo
βββ sidebar.js # Sidebar specific assets/data (e.g., menu items)
βββ components/ # Reusable UI components
βββ ProfilePhotoUpload.jsx # Component for uploading profile photos
βββ TransactionInfoCard.jsx # Component to display transaction details
βββ category/ # Components specific to category management
βββ AddCategoryForm.jsx # Form for adding new categories
βββ ... (other category components)
We welcome contributions to the Budget Buddy Frontend! If you're interested in helping improve the application, please follow these steps:
- Fork the Repository: Start by forking the
budget-buddy-application-frontendrepository to your GitHub account. - Clone Your Fork: Clone your forked repository to your local machine:
git clone https://github.com/YourUsername/budget-buddy-application-frontend.git cd budget-buddy-application-frontend - Create a New Branch: Create a dedicated branch for your feature or bug fix:
git checkout -b feature/your-feature-name # or for a bug fix: # git checkout -b bugfix/issue-description
- Make Your Changes: Implement your feature or fix the bug.
- Run Linting: Ensure your code adheres to the project's style guidelines by running ESLint:
Address any reported issues.
npm run lint
- Commit Your Changes: Write clear and concise commit messages. We encourage following Conventional Commits:
git commit -m "feat: Add new feature for expense categorization" # or # git commit -m "fix: Resolve styling issue on transaction card"
- Push to Your Branch: Push your changes to your forked repository:
git push origin feature/your-feature-name
- Open a Pull Request (PR):
- Go to the original
budget-buddy-application-frontendrepository on GitHub. - You should see an option to "Compare & pull request" from your branch.
- Provide a detailed description of your changes, their purpose, and any relevant screenshots or steps to reproduce the issue (if it's a bug fix).
- Reference any related issues using keywords like
Fixes #123orCloses #456.
- Go to the original
This project is currently not licensed.
This means that by default, all rights are reserved, and you may not use, distribute, or modify this software without explicit permission from the copyright holder (SalemNabeelSalem).
It is highly recommended for the project owner to choose and add a license (e.g., MIT, Apache 2.0, GPL) to clarify the terms under which this software can be used, distributed, and contributed to by others.
- Built with React
- Developed using Vite
- Styled with the power of Tailwind CSS
- Development environment provided by Node.js
- Code quality maintained with ESLint
- Special thanks to the open-source community for the invaluable tools and libraries used in this project.













