Computer Science & Software Engineering
Capstone Infographics Home Page Documentation
Capstone Infographics Home Page README
This document explains how to use the capstone home page located at _posts/capstone/2026-02-09-capstone_home.md.
What the page does
The page displays a grid of capstone infographic cards for student projects. Each card includes:
- Project title and image
- Short project description
- Team member names
- Link to the detailed capstone project post
The page also includes interactive tools for visitors:
- Filter by course type (
All,CSA,CSP) - Search by project title, description, or team member names
- Open project-related links from the folder button on each card
This page is a static Jekyll post enhanced with client-side JavaScript. Card content and external link metadata are defined directly in the post file, not loaded dynamically from the backend at render time.
How to use the page
- View project cards
- Scroll through the card grid under the introductory text.
- Click the project title or image to open the full capstone infographic post.
- Filter projects
- Click
Allto show every capstone project. - Click
CSAto show only CSA projects. - Click
CSPto show only CSP projects. - Cards are filtered by the
CSAorCSPCSS class on the card container.
- Click
- Search projects
- Enter keywords in the search box labeled
Search projects, descriptions, or team members. - The page filters cards in real time by matching text inside each card.
- Search matches the project title, description, and team member names.
- Enter keywords in the search box labeled
- Open project links
- Click the folder icon button in the top-right corner of a project card.
- A popup appears with available links:
Project PageFrontend RepoBackend Repo- The popup is populated from thelinkMapobject in the JavaScript section. - Click outside the popup or pressEscapeto close it.
- Keep titles exact
- The popup matches project titles exactly to entries in
linkMap. - If a title changes, update the corresponding string key in
linkMap.
- The popup matches project titles exactly to entries in
Front-end page structure
The capstone home page includes:
- A filter toolbar with
All,CSA, andCSPbuttons. - A search input field that filters card visibility instantly.
- A
divwithid="capstone-grid"containing all project cards. - Each project card is a block of HTML with one project title, description, and team list.
- The JavaScript
linkMapobject drives the popup external links.
Adding or updating a project card
To add a new capstone project:
- Add a card inside the
<div id="capstone-grid">container. - Match the existing card structure:
- Use a wrapper such as
class="flex items-start space-x-4 p-4 border rounded-lg capstone-item CSA"orCSP. - Wrap the image and title with
<a href="{% post_url yyyy-mm-dd-slug %}">. - Keep the title, description, and team members visible inside the card.
- Use a wrapper such as
- Add or update a
linkMapentry if the project should show external links.- Use the exact project title as the
linkMapkey. - Include any of
pageUrl,frontendUrl, orbackendUrl.
- Use the exact project title as the
Example linkMap entry:
"HawkHub": {
pageUrl: "https://pages.opencodingsociety.com/capstone/hawkhub/",
frontendUrl: "https://github.com/SoniDhenuva/HawkHub",
backendUrl: "https://github.com/SoniDhenuva/hawkhub_spring"
}
Backend overview
The Spring backend for capstone project data lives in spring/src/main/java/com/open/spring/mvc/capstone.
CapstoneInit.java- Runs on Spring application startup.
- Creates the required capstone tables if missing.
-
Seeds capstone project rows and updates them by title.
CapstoneProject.java- Defines the capstone project entity and database mapping.
- Includes fields like
title,subtitle,description,about,courseCode,status,pageUrl,frontendUrl,backendUrl, andcreatedAt. -
Stores multiple values for
tech,teamMembers,keyPoints, andimpactusing JPA collection tables. CapstoneProjectRepository.java- Provides JPA data access for capstone projects.
-
Supports queries like
findByCourseCode(String courseCode)andfindByTitle(String title). CapstoneProjectController.java- Exposes REST endpoints for project management:
GET /api/capstonesGET /api/capstones?courseCode=CSAGET /api/capstones/{id}POST /api/capstonesPUT /api/capstones/{id}DELETE /api/capstones/{id}
CapstoneLikeService.javaandCapstoneLikesApiController.java- Manage project like status and counts when the frontend uses that feature.
Database and migration behavior
The current migration strategy is built into the Spring startup process:
CapstoneInitusesCommandLineRunnerto execute schema creation SQL and seed data.- It creates the main table
capstone_projectsplus collection tables: capstone_techcapstone_team_memberscapstone_key_pointscapstone_impact- Seeded projects are compared by title and updated if they already exist.
This means the backend self-initializes the schema and seeded project data when the application starts.
Managing backend content
Use the Spring backend when you need persistent capstone project data or API-driven access:
- Edit
CapstoneInit.buildProjects()to change seeded project content. - Use
CapstoneProjectControllerto create, update, or delete projects through the REST API. - Keep project titles unique because the backend uses title matching to refresh seed data.
If you change a title in the front-end card, update the corresponding linkMap key in the page and the title in the backend seed data if you want both sides to remain consistent.
Troubleshooting
- If filtering fails, verify the card wrapper contains
CSAorCSP. - If search does not match, verify the search input is enabled and the card text is visible.
- If popup links are missing, verify the project title matches the
linkMapkey exactly. - If backend API calls fail, verify the Spring application is running and the
/api/capstonesendpoint is reachable.
Summary
This README documents both the capstone home page and the Spring backend that supports capstone project data. Use this guide to manage page layout, add project cards, maintain external links, and understand how the backend initializes and serves capstone content.
- If a filter button does not work, verify the corresponding card container includes the correct
CSAorCSPclass. - If the search input does not filter projects, verify the JavaScript is loading and the card text content is present inside the card elements.
- If links are missing from the popup, confirm the project title is present in the
linkMapobject and the link values are valid URLs.
Summary
This capstone home page is designed to make published capstone projects easy to explore and compare. Use filters and search to find projects quickly, and use the folder button to access live pages and code repositories when available.