Design-Based Research Capstone · CSP

Friends of the Poway Library

A full-stack redesign of powayfriends.org — replacing dead history pages, placeholder images, and a 'Watch this space for 2025' banner with a live book catalog, gamification hub, volunteer flow, and a deployed Flask backend.

Live Team: Shayan Bhatti, Arnav Pallapotu, Tanay Paranjpe Boolean-Boyz · Poway, CA
6 Interactive games built
1978 Organization founded
Friends of the Poway Library — capstone project infographic
Live
Project Team Shayan Bhatti · Arnav Pallapotu · Tanay Paranjpe

Friends of the Poway Library

Nonprofit Website Redesign & Community Engagement Hub

  • Built a live Book Catalog with search, filter by age group and condition, sort by price/title/author, full admin CRUD, and a Book Detail modal — all connected to a Flask REST API
  • Integrated a Gemini AI chat interface for personalized book recommendations on the catalog page (Groq API as fallback)
  • Deployed full authentication: sign-in, account registration, JWT tokens, localStorage session management, and admin role gating
  • Created a Gamification Hub with 6 live games: PinShelf (daily word game), Book Trivia, Word Scramble, Library Shelf Run (arcade), Network Stack Challenge, and OSI Layers RPG
  • Built user profiles with game statistics — Wordle streaks, guess distribution chart, XP level progression across all six games
  • Rebuilt the History page with a real organizational timeline: founding in 1978, first used book sales in the 1980s, permanent bookstore in the 1990s, expanded programming through today
  • Created a Newsletters archive with The Open Book PDF viewer and quarterly issue cards going back to 2023
  • Built a Contact page with embedded Google Map, social media links (Facebook, Instagram, X, Yelp), address, phone, email, and bookstore hours
  • Implemented an Events Calendar on the home page with admin controls for creating and managing library events
  • Added tree/nature-themed hero decorations site-wide and a persistent auth nav that shows the logged-in user's name on every page
  • Built a server-rendered admin dashboard at /fopl/admin — registered users table, book catalog breakdowns by age group and condition, per-game session and win-rate stats, and calendar event count. JWT-gated, admin-only
Jekyll (GitHub Pages) Flask + Python SQLAlchemy JavaScript (ES6+) HTML / CSS Gemini API Groq API (AI fallback) Flask-RESTful JWT Auth Lato + Cabin (Google Fonts)

The Friends of the Poway Library is a volunteer-run 501(c)(3) nonprofit that operates a used bookstore at 13137 Poway Rd, funds library programs, and hosts 400+ annual events. Their old site had a History page with no actual history, events that redirected away to the county library, and a volunteer CTA that just said 'email us.' This capstone rebuilt the entire site: a live book catalog with AI recommendations, a gamification hub with six interactive games, full authentication with JWT tokens, user profiles with game streaks, an admin dashboard, and a Flask/SQLAlchemy backend.

  • Book catalog makes the bookstore's inventory searchable online for the first time — visitors can browse titles before they walk in
  • AI recommendations connect readers to books they'll want, increasing engagement and bookstore revenue for the library
  • Six gamified challenges reward library engagement, driving repeat visits and time on site
  • Real authentication and profiles give volunteers and donors a persistent presence instead of a dead 'email us' CTA
  • Rebuilt history and About content establishes organizational credibility for new donors and grant applications
  • Newsletter archive gives the community access to The Open Book publications without digging through their inbox
  • Events calendar embedded on-site means visitors no longer leave to the county library system to find Storytime, Tai Chi, or Chess Club
  • Accessible design (ARIA labels, keyboard navigation, semantic HTML) opens the site to seniors and families — the library's core audience

Planned Features

Coming Soon 📷

Book Scan — Add to Catalog

Volunteers scan a book's barcode or ISBN with their phone camera to instantly add it to the online catalog — no manual data entry. Title, author, and cover art pulled automatically.

Coming Soon 🛒

Book Scan — Remove on Sale

When a customer buys a book, staff scan it again to automatically remove it from the catalog and decrement inventory — keeping the online listing in sync with the physical shelf in real time.

Coming Soon 💬

AI Chatbot

A conversational AI assistant embedded on the site to help visitors find books, answer questions about the library, and guide them through available resources and events.

Live Features

📚

Book Catalog

Search, filter by age group and condition, sort by price/title/author. Admin CRUD with Book Detail modal. Connected to Flask REST API.

🤖

AI Recommendations

Gemini-powered chat interface on the catalog page. Ask for book recommendations by genre, age group, or mood. Groq API as fallback.

🎮

Gamification Hub

Six interactive games: PinShelf (daily word), Book Trivia, Word Scramble, Library Shelf Run (arcade), Network Stack Challenge, OSI Layers RPG.

🔐

Authentication

Full sign-in and registration system. JWT tokens, localStorage session management, and protected routes. Backend: /api/fopl/login and /api/fopl/register.

👤

User Profiles

Profile pages with game stats: Wordle streaks, guess distribution, XP level, sessions played, and win rate across all six games.

📅

Events Calendar

Embedded events calendar on the home page with admin controls. No more redirecting visitors to the SD County Library system to find Storytime or Chess Club.

📰

Newsletter Archive

"The Open Book" quarterly issues with inline PDF viewer and issue grid cards going back to 2023. Membership callout section.

🗓️

History + Timeline

Rebuilt the History page with a real organizational timeline: founding in 1978, used book sales in the 1980s, permanent bookstore in the 1990s, through today.

🛠️

Admin Dashboard

Server-rendered dashboard at /fopl/admin showing registered users, book catalog breakdowns by age group and condition, per-game session and win-rate stats, and total event count. JWT-gated, admin-only.

📍

Contact + Map

Contact page with embedded Google Map, social media links, address, phone, email, and bookstore hours. Get Involved card with volunteer CTA.

Boolean-Boyz GitHub Organization