Inspiration
Students volunteer once, for CCA points, a requirement, a portfolio line and rarely return. NVPC's 2023 Giving Study showed the biggest driver of repeat volunteering is seeing that your work made a difference. So we built LockedOut around one moment, making the first experience the one that brings students back.
What it does
A personalised volunteering platform for students and community organisations. Students get a "For You" feed ranked by their causes, friends and activity (each with a reason), discover events via search/filters/map, and after attending land on an impact-first memory page — thank-you, impact figures and recap before any badge. A Giving Journey tracks hours, achievements and a song-backed recap diary; a Community showcase lets them follow people and causes. Organisations get event management, check-in, impact posting and retention analytics.
How we built it
Node.js on the standard library, no framework, in a MVC architecture. Storage is pluggable, persistent SQLite by default, in-memory, or an MSSQL stub. The front end is a vanilla-JS SPA with no build step. A weighted recommender (cause 40%, activity 25%, friends 15%, skills 10%, popularity 10%) explains every result, secured with scrypt hashing, signed tokens and role-based access control.
Challenges we ran into
Making the feed genuinely personal meant excluding what students don't care about while keeping a separate path for newcomers. A dropdown rendering behind everything turned out to be a stacking-context bug from our animation leaving inline transforms, z-index couldn't fix it. We also fought better-sqlite3's native build on Windows, layout bugs from long names breaking the top bar, and the discipline of honestly tracking what was built versus only designed.
Accomplishments that we're proud of
We have created a core loop that runs end to end, a recommender that explains itself, human touches like the recap slideshow and impact-first memory page, a clean framework-free codebase with swappable storage, and an README that marks every feature built, partly built, or designed-only.
What we learned
We learnt that the UI details users never name (stacking contexts, name overflow, focus) are what make an interface feel solid. A disciplined MVC on Node's standard library goes a long way without a framework. And honesty about scope makes a project more credible, not less.
What's next for LockedOut
Finishing the recognition layer with a memory page that names the student, their role and who they went with, plus a "your share" impact estimate.
Built With
- better-sqlite3
- css
- html
- javascript
- node.js
- rest-api
- sqlite
Log in or sign up for Devpost to join the conversation.