Projects/Panel - CompuShare

Panel - CompuShare

React & Prisma & Postgres

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;

  1. Next.js (React)

  2. Prisma ORM

  3. Postgres DB

  4. Typescript

  5. TailwindCSS

  6. Mantine component library (focus was building the back-end, didn't want to spent too much time on the front-end components)

  7. 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:

  1. Edit the CSV

  2. Import it again on multiple places

  3. 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?

  1. Saving a form as a concept; to finish it at the client

  2. Creating new clients yourself, while filling in the form

  3. Quickly looking up an address

  4. Going to a company page, and revisiting each form that has been submitted at that company

  5. Sending a PDF after completing an form

  6. User authentication (before we would have 1 user)

  7. Letting my colleagues change the SMTP-settings easily if needed in the settings menu

  8. Letting my colleagues change the receivers of the forms in the settings

  9. Creating a workorder, declaration, delivery proof

  10. Letting them upload a profile picture, that will end up on the PDF

  11. Uploading hour sheets, and connecting the rows with the clients