A certificate website with ability to hand out multiple certificate in PDF Format for various events. It has a nice, minimal and interactive UI which is responsive for small as well as large screens. Built using Node/Express and MongoDB it allows for multiple template, multiple schemas/models and a central CSV processor alongside individual ones. At a glance the app consists of
- 🌐 Node/Express Backend: with main entry via
app.js
intogateway.ejs
. - 📊 CSV Imports: Specific datasets in
Datasets/
which are uploaded via files inCSV_Handlers
. Includes a centralized CSV Processor. - 🖼️ Dynamic PDF Generation: Many templates which are programmatically written to via
pdflib
allowing for OpenType fonts and high customization. - ✅ Proper Tests: Tests written in Jest to streamline the process.
- 🎨 UI/UX: A minimal and responsive UI which can be easily modified as per liking. Uses Tailwind CSS and has dark mode.
- 📈 Scalability: Scalable for large datasets with good error handling and easy to modify.
- 🔍 PDF Layout Testing: Allows you to test out placement of text on any PDF via
try-pdf.ejs
. Includes setting font size and font family. - 🔔 Toasts: Features a great, minimal and stacking toast functionality with various types as per requirements
- 🥇 Verification: Verify certificates with the unique
CertID
provided with every certificate. You can return information corresponding to the event the certificate was for - 📝 Feedback & FAQs: A feedback optionality in the forms. A dedicated FAQs page and redirects in case of errors. Loading indicator during page load
- 📋 Admin Dashboard: An admin dashboard with pagination and sentiment analysis. Shows total number of users attended, number of users who got their certificates and most recent certificate receivers. Also uses
chartjs
.
-
Write more tests - Feedback system (Will expand on this)
- FAQs and better error page (Partially)
- Loading indicator
- Add an analytics page based on feedback, can see event-wise
- Maybe add charts to above
- Firstly make a MongoDB Atlas account and connect to it. (Preferably by VSCode Extension)
- Put your connection string in
.env.local
file. - Install necessary packages via
npm i
. - Test out the existing events by uploading
node ...js
(For usingcsvProcessor
make proper file likemembershipProcessor
) which will upload the data into your MongoDB collections. Then runnodemon app.js
to start the app. - If it throws error then check firstly it says
Connected to MongoDB
in console, if not then connect to. (Usually by whitelisting your IP) - Open
localhost:3000
and then try it out. On/
you will see links to the other events. - Deployable if you wish. (Check
.github/
) - If you wish to use
try-pdf.ejs
then runnode generate.js
. - To see admin dashboard run
admin.js
- See LICENSE.
- I have put
generate.js
to run on separately fromapp.js
with regards to production. - The basic idea is you have your events and workshops and what-not. The website helps you to give away certificates, you store the user data in CSV for people who attended them and upload it to MongoDB. The user has to visit the website and go to the respective event page then they put in their name and other details and simply get the certificate. The PDF generates in real time, not need to generate them beforehand (You will have to provide template in
Certificate_Templates
and CSV files goes inCSV_Handlers
)
Feel free to explore, raise issues for bugs or more features. If possible give credits (: