The Petitions and Grievances Portal is designed to facilitate the students of NIT Patna in raising their grievances and ensuring they are addressed by the authorities. This platform allows students to submit petitions, upvote or downvote issues, and helps the administration prioritize and resolve the most common grievances effectively.
- Create Petitions: Students can submit petitions detailing their issues or grievances.
- Voting System: Users can upvote or downvote petitions to signify agreement or disagreement with the issue.
- Grievance Tracking: Petitions are tracked based on the number of votes they receive, with highly upvoted petitions notified to the authorities.
- Notifications: Petitions that receive more than 20 upvotes trigger a notification to the relevant authorities for action.
- Google Authentication: Users can sign up and sign in using their Google accounts for a seamless authentication process.
- Frontend:
- HTML, CSS, JavaScript
- React.js
- react-toastify
- Backend:
- Firebase (Authentication, Firestore Database, Hosting)
Follow these steps to get the project up and running on your local machine:
-
Clone the Repository:
git clone https://github.com/your-username/nit-patna-grievances-portal.git cd nit-patna-grievances-portal
-
Install Dependencies:
npm install
-
Configure Firebase:
- Create a Firebase project at Firebase Console.
- Enable Authentication and Firestore Database in your Firebase project.
- Enable Google Authentication in the Firebase Authentication section.
- Copy your Firebase configuration and paste it into a
Firebase.js
file in your project's root directory.
-
Run the Application:
npm start
-
Build for Production:
npm run build
The project is organized into the following main directories and files:
- src/components: Contains React components such as Navbar, PetitionForm, PetitionList, etc.
- src/pages: Contains pages such as Home, Login, Signup, Dashboard, etc.
- src/Firebase.js: Firebase configuration and initialization file.
- src/App.js: Main application component handling routes and authentication state.
- public: Public assets such as images and the main HTML template.
- index.js: Entry point of the React application.
-
Sign Up and Login:
- New users can sign up using their email and password or sign up with Google.
- Existing users can log in with their email and password or sign in with Google to access the platform's features.
-
Submit a Petition:
- Once logged in, navigate to the "Write" page to submit a new petition.
- Fill in the issue, description, and email fields, then submit the form.
-
Vote on Petitions:
- View the list of petitions on the Dashboard.
- Upvote or downvote petitions to express your support or disagreement.
-
Track Petitions:
- Petitions with significant upvotes will be highlighted and notified to the authorities for action.
- Petitions with excessive downvotes will be removed from the platform.
Contributions are welcome! If you have any suggestions, improvements, or bug fixes, please open an issue or submit a pull request.
For any questions or feedback, please reach out to the project maintainers:
- Avnit Prakash (avnitprakash3@gmail.com)
Feel free to customize this README file as needed to better fit your project.