The inspiration behind Account Beaver was to provide small businesses and freelancers with a service that allows a user to generate a pdf invoice for their own records and to send the invoice to their clients via email within our application.

What it does

Our full-stack web application takes in text inputs from the user for a typical invoice, such as shipping information, item descriptions, subtotals, etc... Account Beaver takes those inputs along with an email address and generates a pdf invoice in the backend using PDFKit and Node.js. Once the invoice is generated, it will be sent to the client's email using SendGrid's API. It will display a successful or failed attempt to the user depending on whether the pdf was able to be sent to the relevant email address.

How we built it

For the backend, Account Beaver used JavaScript, Node.js, Express, BusBoy, SendGrid, and PDFKit. When building our application, we started with the backend first since the important features, generating the invoice and sending it via email, took place in the backend. The frontend had a form that would submit input data that can be used to create a JavaScript Object, which is then used to generate the pdf using PDFKit. The pdf can be sent to a client's email address using SendGrid.

The frontend was built using HTML, CSS, JavaScript, and Sass. We found a template from HTML5-UP that suited our needs for the frontend, plus using a template reduced development time significantly, allowing us to focus more on backend development.

Challenges we ran into

As with many products, deployment from a development environment to a production environment was not as smooth as we had anticipated, though we were able to get our live demo working just in time.

Accomplishments that we're proud of

Despite some turbulence in the first few days of the project, we're proud that we were about to complete this project without sizing back our original goals. We're also proud that we were able to pick up on the use of several different backend modules to perform the functions of our project.

What we learned

Our team learned more about the different node modules for backend development and figuring out how to make it all come together at the end. We also learned more about using Github and Git to effectively work together through separation of tasks with branches.

What's next for Account Beaver

More features can be added to Account Beaver to make it more robust and appealing to use. Adding in an option to insert a business logo would be the first step towards that goal, along with adding a preview option so that users can see what the pdf would look like before sending it to their client. Afterward, it would depend on the vision of the project, whether we would want to implement a user system that would save the pdfs stored in the cloud or to keep it without users.

Share this project: