Inspiration
On the internet, A lot of open-source Invoice management apps are built with Laravel. As a Javascript developer, I want to build the "React Solution" for devs that are familiar with React and Javascript.
What it does
In essence, Invoys enables developer to spin-up their own invoice management app that are fully customizable and free.
How we built it
Invoys is bootsrapped with create-t3-app which based on Next.js.
- Typescript is must.
- Styling is done in Tailwind to develops faster.
- Database using MySQL, but can be other RDBM as long it's supported by Prisma.
- Data fetching with TRPC. A tech that built on top of zod and tanstack-query.
- Next-auth for authentication.
- Courier API to send emails.
Challenges we ran into
- Dynamically generates PDF with React was not an easy feat and tricky.
- Defining Schema and making the relationship with Prisma. As I'm not learning database deeply, creating relationship and the right structure for database is surely challenging.
- Testing a fully authenticated and app with lots of interaction is very difficult for a first-timer. I was blocked by how to work around data fetching in testing.
- Setting up repository for Open Source. Properly setting it so people can use your project easily requires a lot of thinking and revision.
Accomplishments that we're proud of
- Shipping a functional complex app for the first time.
- Able to integrate with third-party vendor like Courier is a huge feat. At first, it was a little bit confusing on how to manage it. As time goes by, it become easier.
- Generating a PDF properly that can be downloaded.
What we learned
One thing that I learn is just try to build it first, if stuck then put it off for later. Before that, I was doing too much calculations before trying something (e.g. library), it turns out by trying I can learn and fail much faster.
What's next for Invoys
Invoys is still far from perfect and bug prone, so it will still be improved. Some of them are:
- Dashboard analytics.
- Recurring and scheduled invoice sending.
- Invoice due date reminder.
- Setup CI workflow for testing.
- Improves the Design of UI/UX.
- Features for team
Built With
- courier
- next.js
- planetscale
- playwright
- prisma
- tailwind
- tanstack-table
- trpc
- typescript
- vitest

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