Inspiration
My motivation for undertaking this project stemmed from a desire to assist my local community. With my mother running a shop where cash transactions are predominant due to customer preferences, I noticed a similar trend among neighboring small businesses. To address this, I took it upon myself to develop a system that would enable the seamless tracking of transactions for future reference.
By creating such a solution, I believe I can empower small businesses with a comprehensive understanding of their financial performance. Through Curious-cashflow, entrepreneurs can conveniently access a record of their profits accumulated over the past year. Additionally, by utilizing the payment API provided by Square, every transaction is securely processed, mitigating the risk of data loss in the event of a database failure.
What it does
The business tracker app helps users track their transactions, monitor their profits, and visualize transaction history using graphs and charts. It provides insights into monthly, weekly, daily, and yearly profits, allowing users to make data-driven decisions for their business.
How we built it
I built the business tracker application using React for the front-end and Node.js for the back-end. The application stores data in a database and communicates with the server using RESTful APIs. User authentication is implemented for secure access. Transaction history is visualized using JavaScript libraries, and the application is deployed to render.com
Challenges we ran into
Authenticate User: During the implementation of user authentication I decided to use JWT and I was going to use cookies to store the token generated during login for each user, however I had an issue due to having my frontend in a localhost:3000 and my backend in localhost:3001, this made it difficult for them to share data and the cookie was not stored in the correct client. I decided to store the JWT token on the local storage of each client just to make it work. In the future I plan to come to back to this and allow cookies because they are more secure and prevent cyber attacks.
** Square Oauth : Each **square access token is stored in the mongodb database and I had a very difficult time implementing the api due to the complexity and my inexperience using third party APIs. I did manage to the api work so that after the user logs into the square developer app it gets redirected to the home page of my applicaiton, however while deploying the app to production it didn' work. It turns out the state that we create and store in the request when accesing the "/api/square/oauth" for authorization doesnt really get stored into the request. This works for development but not in production for some reason I yet haven't been able to discover.
Common Mistakes : Forget to decrypt the Encrypted Square Acess Token and this took me 1 day to figure out.
Accomplishments that we're proud of
- Simplicity
- Maintainability
- Responsiveness
What we learned
Backend development:
- Handling backend Endpoints requests.
- Schemas Mongoose
- Authentication with JWT, how cookies work
Third Party APIs
- Square Payments API
Front End:
- Lot of new stuff I didn't know existed.
What's next for Curious Cashflow
- History: This is where the graph should be displayed and the user will be able to see all their transactions.
- Migrate from LocalStorage to Cookie private information storage: Highly important as localStorage are vulnerable to XSS attcks.
- Repair Production Issue: State issue

Log in or sign up for Devpost to join the conversation.