SpendWise - Budget management app (Ruby on Rails + React) - Part 1

shraddharao_

Shraddha

Posted on September 2, 2024

SpendWise - Budget management app (Ruby on Rails + React) - Part 1

Over the past few weeks, I've been reflecting on how to boost engagement on my LinkedIn and connect with more like-minded professionals. One of the ideas that came to mind was building a project from scratch and documenting the entire process. So, here it is—a Rails + React project where I'll be developing a budget management app and sharing every step of my coding journey.

Project Goals and AI Integration
The main goal of this project is to build a budget management app with a clean, user-friendly interface. But that’s not all—I also plan to integrate AI to take this app to the next level. I’m considering leveraging the ChatGPT API to help users generate tailored timesheets for their budget goals, among other potential AI-driven features. This integration should be a fun challenge, and I’m excited to see where it leads!

Initial Project Structure
While this is a work in progress, here’s the rough project structure I have in mind:

budget_management_app/
├── app/
│   ├── assets/                 # Rails assets (stylesheets, JavaScript, images)
│   ├── controllers/            # Rails controllers
│   │   ├── application_controller.rb
│   │   ├── budgets_controller.rb
│   │   ├── categories_controller.rb
│   │   ├── transactions_controller.rb
│   │   ├── users_controller.rb
│   ├── models/                 # Rails models
│   │   ├── budget.rb
│   │   ├── category.rb
│   │   ├── transaction.rb
│   │   ├── user.rb
│   ├── serializers/            # ActiveModel serializers for JSON responses
│   │   ├── budget_serializer.rb
│   │   ├── category_serializer.rb
│   │   ├── transaction_serializer.rb
│   │   ├── user_serializer.rb
│   ├── views/                  # Rails views (not used for API-only app)
│
├── client/                     # React frontend
│   ├── public/                 # Static assets (index.html, favicon, etc.)
│   ├── src/
│   │   ├── components/         # React components
│   │   │   ├── Dashboard.jsx
│   │   │   ├── BudgetForm.jsx
│   │   │   ├── TransactionList.jsx
│   │   │   ├── CategoryList.jsx
│   │   ├── pages/              # React pages
│   │   │   ├── Home.jsx
│   │   │   ├── Login.jsx
│   │   │   ├── Signup.jsx
│   │   ├── api/                # API interactions with Rails backend
│   │   │   ├── budgetApi.js
│   │   │   ├── transactionApi.js
│   │   │   ├── userApi.js
│   │   ├── App.js              # Main React app component
│   │   ├── index.js            # React entry point
│   │   ├── styles/             # CSS or SCSS styles
│   │       ├── main.css
│
├── config/
│   ├── routes.rb               # Defines API routes
│   ├── initializers/           # Configuration settings
│
├── db/
│   ├── migrate/                # Database migration files
│   ├── schema.rb               # Database schema
│
├── Gemfile                     # Rails dependencies
├── Gemfile.lock
├── package.json                # Frontend dependencies
├── Rakefile
├── README.md
├── .gitignore
Enter fullscreen mode Exit fullscreen mode

References
GitHub : SpendWise
Project Board : Click here to check Project timeline

What's Next?
I'll be setting up a Kanban board to organize the project backlog and kick things off by creating an ERD (Entity Relationship Diagram) to get a clearer understanding of the model-view-controller structure. In the next blog, I'll dive into adding validations and setting up user authentication.

Why I’m Sharing This?
By sharing this journey, I hope to connect with fellow developers, learn from their experiences, and inspire others who might be considering a similar project. I believe there’s value in openly sharing the development process—both the successes and the setbacks. If you're curious about building similar apps or want to follow along, stay tuned for more updates as I document each milestone.

Stay tuned for more updates as this project evolves!

💖 💪 🙅 🚩
shraddharao_
Shraddha

Posted on September 2, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related