nedpals / Accred

An event e-certificate generator for GDSC events using Next.js, and Firebase.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Accred - An Event E-Certificate Generator Web App πŸŽ–οΈ

Accred Logo Commit Shield License

Context

I developed Accred as a side project due to the struggles I faced in managing e-certificate generation for the Google Developer Student Clubs at the University of San Carlos. Our existing process of generating and storing certificates in our drive was time-consuming and required constant work from the core team. Additionally, it was taking up a significant amount of storage space.

To overcome these challenges, I created Accred to automate the certificate generation process and eliminate the need for storing them in the cloud. My app generated certificates on-demand, ensuring that no unnecessary data was stored and saving valuable storage space.

Additionally, developing Accred served as an opportunity for me to gain hands-on experience and enhance my knowledge of Next.js and its app router. Throughout the development process, I delved into the intricacies of Next.js, leveraging its powerful features to create a seamless and efficient user experience.

By working on Accred, I not only addressed the pressing issue of e-certificate management but also utilized it as a practical learning experience. Exploring the capabilities of Next.js and its app router allowed me to expand my skill set and deepen my understanding of web development frameworks. This project served as a valuable stepping stone in my journey to becoming a proficient developer, providing me with practical insights and expertise that I can apply to future projects.

Tech Stack

Client:

next.js tailwind

Server:

firebase

Screenshots

Admin Page Add Event Modal Event Page Certificate Verification Page

Run Locally

Clone the project

  git clone https://github.com/blurridge/Accred

Go to the project's directory

  cd Accred/

Install dependencies

  npm install

Start the server

  npm run dev

Structure

πŸ“¦
β”œβ”€ .eslintrc.json
β”œβ”€ .gitignore
β”œβ”€ README.md
β”œβ”€ app
β”‚  β”œβ”€ admin
β”‚  β”‚  β”œβ”€ docs
β”‚  β”‚  β”‚  β”œβ”€ layout.tsx
β”‚  β”‚  β”‚  β””─ page.tsx
β”‚  β”‚  β”œβ”€ home
β”‚  β”‚  β”‚  β”œβ”€ layout.tsx
β”‚  β”‚  β”‚  β””─ page.tsx
β”‚  β”‚  β”œβ”€ login
β”‚  β”‚  β”‚  β””─ page.tsx
β”‚  β”‚  β””─ page.tsx
β”‚  β”œβ”€ event
β”‚  β”‚  β””─ [id]
β”‚  β”‚     β”œβ”€ certificate
β”‚  β”‚     β”‚  β””─ [certId]
β”‚  β”‚     β”‚     β””─ page.tsx
β”‚  β”‚     β”œβ”€ layout.tsx
β”‚  β”‚     β””─ page.tsx
β”‚  β”œβ”€ favicon.ico
β”‚  β”œβ”€ globals.css
β”‚  β”œβ”€ layout.tsx
β”‚  β””─ page.tsx
β”œβ”€ assets
β”‚  β”œβ”€ accred_logo.svg
β”‚  β”œβ”€ accred_ls.svg
β”‚  β”œβ”€ accred_sq.svg
β”‚  β””─ gdsc_logo.png
β”œβ”€ components
β”‚  β”œβ”€ AddEvent.tsx
β”‚  β”œβ”€ AdminLoginButton.tsx
β”‚  β”œβ”€ Certificate.tsx
β”‚  β”œβ”€ CertificateVerifier.tsx
β”‚  β”œβ”€ DataTable.tsx
β”‚  β”œβ”€ EventCard.tsx
β”‚  β”œβ”€ EventCardContent.tsx
β”‚  β”œβ”€ EventDropdown.tsx
β”‚  β”œβ”€ EventForm.tsx
β”‚  β”œβ”€ Footer.tsx
β”‚  β”œβ”€ GuestLoginButton.tsx
β”‚  β”œβ”€ LoginCard.tsx
β”‚  β”œβ”€ Navbar.tsx
β”‚  β”œβ”€ RingLoader.tsx
β”‚  β””─ ui
β”‚     β”œβ”€ avatar.tsx
β”‚     β”œβ”€ button.tsx
β”‚     β”œβ”€ calendar.tsx
β”‚     β”œβ”€ card.tsx
β”‚     β”œβ”€ columns.tsx
β”‚     β”œβ”€ dialog.tsx
β”‚     β”œβ”€ dropdown-menu.tsx
β”‚     β”œβ”€ form.tsx
β”‚     β”œβ”€ input.tsx
β”‚     β”œβ”€ label.tsx
β”‚     β”œβ”€ navigation-menu.tsx
β”‚     β”œβ”€ popover.tsx
β”‚     β””─ table.tsx
β”œβ”€ context
β”‚  β”œβ”€ AuthContext.tsx
β”‚  β”œβ”€ EventDataContext.tsx
β”‚  β””─ ThemeContext.tsx
β”œβ”€ firebase
β”‚  β””─ config.ts
β”œβ”€ lib
β”‚  β””─ utils.ts
β”œβ”€ next.config.js
β”œβ”€ package-lock.json
β”œβ”€ package.json
β”œβ”€ postcss.config.js
β”œβ”€ public
β”‚  β”œβ”€ next.svg
β”‚  β””─ vercel.svg
β”œβ”€ tailwind.config.js
β”œβ”€ tsconfig.json
└─ utils
   β”œβ”€ compressBanner.ts
   β”œβ”€ deleteFromFirebase.ts
   β”œβ”€ fetchImageSize.ts
   β”œβ”€ generateLinkedInShareURL.ts
   β”œβ”€ parseCSV.ts
   β”œβ”€ uploadToFirestore.ts
   β””─ uploadToStorage.ts

Acknowledgements

I would like to acknowledge the work of Ned Palacios and GDSC University of Immaculate Conception as the inspiration for this project's concept of certificate generation which was originally done in Vue for LAWIG - a GDSC Philippines Info Session.

About

An event e-certificate generator for GDSC events using Next.js, and Firebase.

License:MIT License


Languages

Language:TypeScript 96.0%Language:JavaScript 2.4%Language:CSS 1.6%