Panel - CompuShare
Summary
The goal of this project was to build my first own back-end, and building the complete front-end by myself.
For this project i have used;
Next.js (React)
Prisma ORM
Postgres DB
Typescript
TailwindCSS
Mantine component library (focus was building the back-end, didn't want to spent too much time on the front-end components)
Cloudflare Image CDN
I've started by setting up the schema; Thinking out every model i would need. While i was building the application i found that i would need extra fields. But it was easy to migrate thanks to Prisma.
Model Delivery
model Delivery {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
clientName String
visitDate DateTime
timeLeftOffice DateTime
timeLeftClient DateTime
deliveredProducts String
signature String
cars Car[] @relation("CarToDelivery")
company Company[] @relation("CompanyToDelivery")
employes User[] @relation("DeliveryToUser")
}
I won't list every model here π But this should give you a overall idea about this project.
What was the goal of this project?
At the company i worked; we had a simple form were customers would sign to prove that we visited them, and solved their problem. It was a simple Wordpress site. Each time if there would be a new client, we would need to:
Edit the CSV
Import it again on multiple places
Link the fields again
It was not great to use. I wanted to build this web app in my free time to train my skills, and build a application that the team would enjoy.
What are the features?
Saving a form as a concept; to finish it at the client
Creating new clients yourself, while filling in the form
Quickly looking up an address
Going to a company page, and revisiting each form that has been submitted at that company
Sending a PDF after completing an form
User authentication (before we would have 1 user)
Letting my colleagues change the SMTP-settings easily if needed in the settings menu
Letting my colleagues change the receivers of the forms in the settings
Creating a workorder, declaration, delivery proof
Letting them upload a profile picture, that will end up on the PDF
Uploading hour sheets, and connecting the rows with the clients