This README provides an overview of the project, including team details, relevant links, tasks completed, tech stack, key features, and steps to run the project locally.
Team Name: HEXA CODE
Team Leader: @tanyaguptaaaa29
Team Members:
- MEMBER_1 - 2023UEE4648 - @tanyaguptaaaa29
- MEMBER_2 - 2023UEE4661 - @yashmit789
- MEMBER_3 - 2023UCS1685 - @Krish-Garg01
- MEMBER_4 - 2023UEC2596 - @SuryanshKS
- MEMBER_5 - 2024UCS1700 - @dev-nihalsharma
- MEMBER_6 - 2024UCA1953 - @sujallchaudhary
- Final SIH Presentation: Final SIH Presentation
- Internal Presentation: Internal Presentation
- Video Demonstration: Watch Video
- Live Deployment: Visit Web App
- Source Code: GitHub Repository
- **User Roles & Access Control:**Role-based access control system that allows users like administrators, and Professors to perform personalized tasks.
This project utilizes a variety of technologies to build a scalable, efficient, and user-friendly application. Below is an overview of the tech stack used and the reasons behind choosing each technology.
Why Node.js?
Node.js was chosen for its non-blocking, event-driven architecture, which is perfect for building scalable and high-performance server-side applications. Its vast ecosystem and the ability to use JavaScript both on the front-end and back-end make development more streamlined and efficient.
Use Case:
Node.js is used to handle server-side logic, manage API endpoints, and interact with databases.
Why Next.js?
Next.js is a popular React framework for frontend development because it offers server-side rendering (SSR), static site generation (SSG), and excellent performance. It simplifies routing, optimizes SEO, and improves page load times. With built-in API routes, Next.js also enhances scalability, making it ideal for modern, dynamic applications.
Use Case:
Next.js is utilized to create modern web apps with seamless performance and user experience.
Why TailwindCSS?
Tailwind CSS is a utility-first framework that speeds up front-end development by providing pre-built classes for layout, styling, and responsiveness. It simplifies customization, reduces the need for custom CSS, and ensures consistency across designs. Tailwind is also highly efficient, making the styling process faster and more maintainable.
Use Case:
TailwindCSS is utilized to create clean and visually appealing ui/ux with simpler way to write css.
Why DigitalOcean?
DigitalOcean is chosen for its simplicity, scalability, and cost-effectiveness. It provides a reliable cloud infrastructure that can easily scale as the application grows. Its user-friendly interface and extensive documentation make it easy to manage and deploy applications.
Use Case:
DigitalOcean hosts the backend server and database, providing a scalable and secure environment for the application.
Why MySQL?
MySQL is a powerful, open-source relational database management system that offers high performance, reliability, and ease of use. Its wide adoption and robust community support make it a trusted choice for handling structured data.
Use Case:
MySQL is used to store and manage relational data for the application, ensuring data integrity and efficient querying.
Why JWT?
JWT is used for securely transmitting information between parties as a JSON object. It helps in implementing authentication and authorization by allowing stateless sessions and ensuring data integrity. Its compact, URL-safe format is ideal for modern web applications.
Use Case:
JWT is used for managing user authentication and maintaining secure, stateless sessions across different parts of the application.
Why Sequelize?
Sequelize is a promise-based Node.js ORM (Object-Relational Mapper) that supports multiple SQL dialects. It simplifies database interactions by providing an easy-to-use API for querying and manipulating data, and it includes features for model definition, migrations, and associations.
Use Case:
Sequelize is used for managing database operations in the Node.js application, including defining models, running migrations, and executing queries in a more structured and efficient manner.
- Node.js (v14.x or later)
- npm or yarn
-
Clone the Repository
git clone https://github.com/dev-nihalsharma/sih-24-facultyfolio.git cd sih-24-facultyfolio
-
Set Up the Node.js Server
-
Navigate to the
server
directory:cd server
-
Install dependencies and start the server:
npm install npm start
The server runs on
http://localhost:5000
. -
-
Set Up the NEXT.js Web App
-
Navigate to the
client
directory:cd ../client
-
Install dependencies and start the Expo app:
npm install npm run dev
The web app runs on
http://localhost:3000
-
- Ensure both the server and web app are running.