5th Semister major project — Diploma in Computer Engineering & IoT, Government Polytechnic Angul.
Group: PawBytes
A single web portal that replaces scattered offline/manual processes (attendance registers, notice boards, result sheets) with one role-based system for students, faculty, and admin — plus an AI-powered study assistant that generates practice questions and gives instant feedback on answers.
The goal is a project that's genuinely useful day-to-day on campus, buildable by a 5-person team new to frontend development, and includes one standout technical feature (AI integration) without requiring any machine learning background.
- Backend: Django
- Frontend: Django templates + HTML + CSS + JS
- Database: PostgreSQL
- AI: External LLM API
- Deployment: Vercel
| # | Module | Description | Owner |
|---|---|---|---|
| 1 | FrontEnd | Full FrontEnd with UI | CR |
| 2 | Attendance | Mark/view attendance, extends existing Student Tracker | TBD |
| 3 | Documentation | Post/view announcements, filter by department/year | TBD |
| 4 | Exams & Results | Exam schedules, upload/view results (Exam, ExamResult models) | TBD |
| 5 | BackEnd & AI Study Assistant | Topic-based question generation + AI answer feedback | TBD |
accounts
User(extend Django's built-in) — role: student / faculty / adminProfile— department, year, roll number
attendance
AttendanceRecord— student, date, subject, status (present/absent)
notices
Notice— title, body, posted_by, department, created_at
exams
Exam— subject, date, max_marksExamResult— student, exam, marks_obtained
ai_assistant
Question— topic, text, generated_atAnswer— question, student, answer_text, ai_feedback, score
- Student picks a topic (e.g. DBMS, OOP, Networking, IoT etc.)
- Django view calls the AI API with a prompt: "Generate one interview question about {topic}"
- Question is saved to DB and rendered on the page
- Student submits an answer
- Django sends the answer back to the AI API asking for feedback/score
- Feedback is displayed and saved to
Answermodel
Must-have (MVP):
- Login/signup with role-based redirect (student/faculty/admin dashboards)
- Notices board — post (faculty/admin) and view (all)
- Exam results — admin uploads, student views their own
- AI Study Assistant — pick topic → get question → submit answer → get AI feedback
- Basic responsive UI, consistent theme across all modules
Nice-to-have (if time permits):
- AI feedback includes a score out of 10, not just text
- Student dashboard shows AI practice history
- Notice filtering by department/year
Explicitly out of scope for this project:
- Fee payment / financial modules
- Mobile app
- Real-time chat/notifications (WebSockets)
- Any custom-trained ML model
Each app has its own namespaced templates and static folders (app name repeated inside, e.g. attendance/templates/attendance/) so filenames never collide across apps. Shared layout (navbar, footer, global theme) lives once at the project root in templates/layout.html, and every app template extends it.
Paw-Connect/
├── accounts/
│ ├── templates/
│ │ └── accounts/
│ │ ├── login.html
│ │ └── signup.html
│ ├── static/
│ │ └── accounts/
│ │ └── style.css
│ ├── models.py
│ ├── views.py
│ └── urls.py
│
├── attendance/
│ ├── templates/
│ │ └── attendance/
│ │ ├── mark.html
│ │ └── view.html
│ ├── static/
│ │ └── attendance/
│ │ └── style.css
│ ├── models.py
│ ├── views.py
│ └── urls.py
│
├── notices/
│ ├── templates/
│ │ └── notices/
│ │ └── list.html
│ ├── static/
│ │ └── notices/
│ │ └── style.css
│ ├── models.py
│ ├── views.py
│ └── urls.py
│
├── exams/
│ ├── templates/
│ │ └── exams/
│ │ ├── results.html
│ │ └── schedule.html
│ ├── static/
│ │ └── exams/
│ │ └── style.css
│ ├── models.py
│ ├── views.py
│ └── urls.py
│
├── ai_assistant/
│ ├── templates/
│ │ └── ai_assistant/
│ │ ├── topic_select.html
│ │ └── question.html
│ ├── static/
│ │ └── ai_assistant/
│ │ └── style.css
│ ├── models.py
│ ├── views.py
│ └── urls.py
│
├── templates/ # project-level, shared across all apps
│ └── layout.html # navbar, footer, global theme — every app template extends this
│
├── static/ # project-level, shared across all apps
│ └── css/
│ └── main.css # global theme: colors, fonts, layout
│
├── Campus_Connect/ # project settings
│ ├── settings.py
│ ├── urls.py # includes each app's urls.py
│ └── wsgi.py
├── manage.py
├── requirements.txt
└── README.md
settings.py: set TEMPLATES[0]['DIRS'] = [BASE_DIR / "templates"] so Django finds the shared layout.html, and keep APP_DIRS: True so it also finds each app's own namespaced templates.
Setup and workflow guide for the PawBytes team.
git clone https://github.com/dp0000000004-eng/Paw-Connect.git
cd Paw-ConnectCreate and activate a virtual environment:
python -m venv venv
# Windows
venv\Scripts\activate
# Mac/Linux/WSL
source venv/bin/activateInstall dependencies:
pip install -r requirements.txtCreate a .env file in the project root (this is not in git — get the actual values from the group):
SECRET_KEY=your-django-secret-key
AI_API_KEY=your-ai-api-key
DEBUG=True
Run migrations and start the server to confirm everything works:
python manage.py migrate
python manage.py runserverEach Django app is self-contained — work inside your own app's folder only. See Repo Structure above.
Never work directly on main. Always branch off it:
git checkout main
git pull origin main
git checkout -b feature/<module-name>Examples: feature/notices, feature/attendance, feature/exams, feature/accounts, feature/ai-assistant
Commit small and often — not one giant commit at the end.
git add .
git commit -m "Add Notice model and list view"Write clear, short commit messages describing what changed.
git push origin feature/<module-name>Then on GitHub:
- Open the repo — you'll see a prompt to compare & open a pull request for your branch
- Base:
main← Compare:feature/<module-name> - Add a short description of what you built
- Click Create pull request
- Another teammate reviews the PR before merging — check it runs locally, no conflicts with
main - Once approved, click Merge pull request
- Delete the branch after merging
Before starting any new work, always pull the latest main:
git checkout main
git pull origin mainThis avoids painful merge conflicts later.
- All page templates extend the shared
templates/layout.html— don't create a separate layout per app - Keep static/template files namespaced under your app's own folder (e.g.
notices/templates/notices/,notices/static/notices/) - Stuck for more than ~30 minutes? Ask the group instead of sitting on it
- Never commit
.env,venv/, ordb.sqlite3— already excluded in.gitignore




