-
1
I was allowed to download project from portal and add environments.Times asked 2Official solution
SimpleExaminer portal wala submitted ZIP chahta hai. Local extra changes mat dikhana.
Suggested flow1) Portal ZIP download
2) Extract
3) venv + pip install -r requirements.txt
4) flask run / python app.pyCommunity answers
No replies yet
No community answers yet
Open My solution to be the first to share yours.
My solution
Not submitted yet
-
2
I started the server and panicked as the localserver was not working (it seems I missed the / path and added to /login only) . The proctor was very kind allowed me to check and find problem.Times asked 2Official solution
SimpleLogin flow pehle poochta hai "tu kaun hai?", token milne ke baad har API pe wohi proof dikhate ho.
Authentication step: Vue form email + password JSON POST karta hai. Flask user dhoondhta hai,
check_password_hashse prove karta hai ki tum genuine ho. Galat 401. Sahi pe JWT + role milta hai — yeh session/token hai.Vue
localStorage(ya cookie) mein token rakhta hai, dashboard perouter.push. Aage ki harfetchheader:Authorization: Bearer <token>.@jwt_requiredidentity check (authentication).@roles_required('admin')permission check (authorization) — logged in ho, lekin allowed nahi to 403.Validation alag cheez hai: empty email, password 8+ — form sahi bhara hai ya nahi. Woh identity prove nahi karta.
Logout = client token delete + login page. Server blacklist optional. Password response JSON mein kabhi mat bhejo.
Example
# Authentication @app.route('/api/login', methods=['POST']) def login(): u = User.query.filter_by(email=data['email']).first() if not u or not check_password_hash(u.password, data['password']): return jsonify(msg='bad'), 401 return jsonify(token=create_access_token(u.id), role=u.role) # baad ki APIs # Authorization: Bearer <token> if current_user.role != 'admin': abort(403)Project example: Login.vue POST /api/login → token LS → interceptor. Student token se admin route = 403. Empty form = validation, galat password = 401.
Viva tipNetwork tab mein password body dikhega localhost pe — prod HTTPS. Response mein hash/password echo mat karo.
Community answers
No replies yet
No community answers yet
Open My solution to be the first to share yours.
My solution
Not submitted yet
-
3
Then I hopped onto the demo of the app.Times asked 2Official solution
SimpleDemo script pehle se practice: 5–7 min, Admin + User roles, saare mandatory features.
Suggested flow1) Register/login user
2) Admin login — CRUD
3) Approval/blacklist
4) Booking/apply + edge case
5) Search
6) LogoutViva tipBolte-bolte dikhao. Code tab kholna jab poochhein.
Community answers
No replies yet
No community answers yet
Open My solution to be the first to share yours.
My solution
Not submitted yet
-
4
I answered some question related to the user / admin / staff functionality that my app has (like what one can do and what one cannot do).Times asked 2Official solution
SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.
Community answers
No replies yet
No community answers yet
Open My solution to be the first to share yours.
My solution
Not submitted yet
-
5
Then I showed my cache system in the app.Times asked 2Official solution
SimpleCache = pehli baar hisaab karke copy rakh lo, doosri baar copy dikha do.
Baar-baar same expensive kaam (DB query, counting bookings) mat karo. Result Redis jaise store mein timeout ke saath rakh do.
Cache hit: key mil gayi, DB skip. Cache miss: DB se lao, SET karo, return karo.
Tradeoff: speed vs stale data. Admin naya venue add kare aur cache 50s ka ho to user purani list dekh sakta hai — isliye write pe invalidation zaroori hai.
Browser cache, Flask-Caching, Redis alag layers hain. MAD2 examiner Redis +
@cache.cachedcode dekhta hai.Example
@cache.cached(timeout=50, query_string=True) @app.route('/api/shows') def shows(): return jsonify([s.serialize() for s in Show.query.all()])Project example: Admin dashboard counts / venues list cache. Create/update/delete ke baad
cache.delete('venues').Viva tipprint('DB queried') function ke andar laga ke miss/hit demo karo — hit pe print nahi chalega.
Community answers
No replies yet
No community answers yet
Open My solution to be the first to share yours.
My solution
Not submitted yet
-
6
As the UI part was showed I was directed to open the codebase and show celery.Times asked 2Official solution
SimpleCelery = background naukri. HTTP request ko 10 second email bhejne ke liye mat rokna.
Distributed task queue: aap function ko abhi nahi, worker process mein later/retry/schedule pe chalaate ho.
MAD2 typical jobs: daily reminder mail, monthly HTML report, user-triggered CSV export.
Web request 200ms hona chahiye. 10,000 emails request thread mein = timeout. Worker alag CPU pe kaam kare.
Redis broker chahiye. Beat alag process schedule ke liye.
Example
@celery.task def daily_reminder(): for u in User.query.filter_by(active=True): send_mail(u.email, 'Book something today!')Project example: User Export click → 202 Accepted. Worker CSV + email. Daily 6pm Beat reminder.
Viva tipWorker + Redis bina Beat ke user-triggered chalega. Scheduled jobs ke liye Beat bhi chahiye.
Community answers
No replies yet
No community answers yet
Open My solution to be the first to share yours.
My solution
Not submitted yet
-
7
My celery worker was not working and I panicked so I began to explain it theoretically.Times asked 2Official solution
SimpleCelery = background naukri. HTTP request ko 10 second email bhejne ke liye mat rokna.
Distributed task queue: aap function ko abhi nahi, worker process mein later/retry/schedule pe chalaate ho.
MAD2 typical jobs: daily reminder mail, monthly HTML report, user-triggered CSV export.
Web request 200ms hona chahiye. 10,000 emails request thread mein = timeout. Worker alag CPU pe kaam kare.
Redis broker chahiye. Beat alag process schedule ke liye.
Example
@celery.task def daily_reminder(): for u in User.query.filter_by(active=True): send_mail(u.email, 'Book something today!')Project example: User Export click → 202 Accepted. Worker CSV + email. Daily 6pm Beat reminder.
Viva tipWorker + Redis bina Beat ke user-triggered chalega. Scheduled jobs ke liye Beat bhi chahiye.
Community answers
No replies yet
No community answers yet
Open My solution to be the first to share yours.
My solution
Not submitted yet
-
8
Then I was told to open the models file and one question from there was asked.Times asked 2Official solution
Simplemodels.py = har table ki class: columns, PK/FK, relationships. Yeh Model layer hai.
Suggested flow1) Classes list karo
2) Har table ka kaam 1 line
3) Relationships (1-M / M-M)
4) Constraints (unique, nullable)Example
class Lot(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) spots = db.relationship('Spot', backref='lot', lazy=True)Community answers
No replies yet
No community answers yet
Open My solution to be the first to share yours.
My solution
Not submitted yet