Conversation
Builds the initial app shell for citelines from proj-scaffold, keeping only: Google OAuth login/logout, Admin management of Admins/Researchers (renamed from Instructors), the background jobs subsystem (with the TestJob), and an Admin Developer page. The home page is a placeholder. Backend: package renamed edu.ucsb.cs.scaffold -> edu.ucsb.cs.citelines, ScaffoldApplication -> CitelinesApplication, Instructor -> Researcher (entity/repository/controller/role), trimmed controllers/entities/services/ jobs/repositories/DB migrations to only what the shell needs, and dropped CourseSecurity (its Course/Concept/RosterStudent dependencies are gone). Restored SystemInfoController, which the literal controller list omitted but the Developer page and nav require. Frontend: trimmed components/pages/utils/fixtures per the issue, removed main/api and main/data, rewrote App.tsx routing, simplified AppNavbar/ Footer/BasicLayout (dropped course-menu and concept-graph-canvas specific code), and renamed Instructors pages/routes to Researchers. Removed docs/ down to oauth.md, and scripts/set-pat-encryption-key.sh. Backend: 71/71 tests passing. Frontend: 118/118 tests passing, lint clean, build clean, Storybook build clean. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ApiController.handleForbiddenException and handleIllegalArgument (and ForbiddenException's constructor) were never exercised by any test, since CourseSecurity (the original thrower of ForbiddenException) was removed and nothing threw a plain IllegalArgumentException. Added two endpoints to the existing DummyController test helper and a new ApiControllerTests to exercise both handlers directly. Verified locally with the same command CI runs: mvn -ntp -B test jacoco:report verify -> BUILD SUCCESS, all coverage checks met (100% instructions/lines, 0 missed classes). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
npm run format reflowed two files I'd hand-edited (AboutCitelines.jsx and its test) to match the project's Prettier style, fixing the 35-frontend- format workflow. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In this PR, we build a basic framework for the app, building on a stripped down version of https://github.com/ucsb-cs156/proj-scaffold
Closes #1
Backend (edu.ucsb.cs.citelines):
Spring Boot app renamed from
ScaffoldApplication→CitelinesApplication; kept only theAuth/Admin/Researcher/Jobs/Developer-pageslice per the issue.Instructor→Researcherrenamed everywhere (entity, repo, controller, ROLE_INSTRUCTOR→ROLE_RESEARCHER, DB table). 71/71 tests pass.Frontend
Judgment calls where the issue's literal file lists conflicted with a working app (issue said to ask when unsure, so flagging these rather than burying them):
Dropped CourseSecurity.java despite "(18) keep all config files" — it depends on Course/Concept/RosterStudent, none of which are kept, and nothing in the kept controller set uses it.
Kept SystemInfoController.java even though it's not in the (19) controller list — without it, /api/systemInfo is dead and the Developer page, Swagger/H2 links, and OAuth login button all break. Stripped its /schools endpoint (that used the removed School enum).
Kept WiremockService/Impl/Dummy (services/wiremock package) since the explicitly-kept WiremockApplicationRunner depends on them.
Added a Jobs link to the Admin nav dropdown — it existed as a route in upstream scaffold but had no menu entry anywhere.
Left the .github/workflows/43/44 deploy targets pointing at dokku-sync's 00-sync-scaffold*.yml — renaming those would point at workflows that don't exist in that external repo; that infra will need a citelines counterpart set up separately before those workflows can run.
Left ScaffoldApplicationRunner.java/ScaffoldApplicationRunnerTests.java named as-is — the issue named that exact file to keep, unlike ScaffoldApplication.java which it explicitly said to rename.