Inspiration
The inspiration came from proving my self that I can do better. Since the beginning of the year, my life took a turn and I started to work professionally as a Junior iOS Developer. With the great lessons that I learnt (and still learning), I decided to try again and build my own app, which is still is a fun journey
What it does
The app let's the user to create, edit and share invoices, calculate and validate VAT codes. The app has syncing capability (thanks to Realm Device Sync), so the user can use the mobile app between it's devices, including iPad too
How is built
Since I was already in iOS Development, SwiftUI is my main framework to develop a native iOS App. From a technical perspective, I tried to follow as much as possible the industry standards (writing clean code, protocols usage, design patterns, unit testing etc.) so the app can scale and be easy to maintain in the future.
Challenges
Separating the app models from the realm models (creating a data layer) was quite a struggle. I did this because I wanted to have separated logic for using realm and using the app, so in the future, if for some reasons I'll have to change the back end, I can easily do it because there is a data layer between the app and the data from the back end. This involves storing the user model containing its data, login and user registration flow. Working with PDFs using PDFKit is really complicated, but happily I discovered an open source package that makes working with PDFs much more easier.
Accomplishments
I'm proud that I could implement Realm and the data layer, but I'm also proud of considering the business side of an app (how the app it's built, what it's the business model behind the app, why the users should use it etc.)
Lessons learned
I learnt that making apps is easy, but making good apps takes time, effort and other resources. With this app, I improved my technical skills and I have a better picture about the business side of an app.
What's next for Compania Invoicing
Compania needs to have all the necessary functionalities of an invoice app, that includes:
- Payment options (Bank Details, iDeal, Card payment, etc.)
- Lists of items, expenses, estimates, etc.
- Reports
These are a few features that should be included, more features will come throghout the time.
Built With
- firebase
- realm
- revenuecat
- swiftui
Log in or sign up for Devpost to join the conversation.