A student learning workspace with original practice questions, explanations, and saved progress.
Website · Documentation · Roadmap · Good first issues · Report a bug · Propose a question
Note
This is an early student-product foundation. Four practice topics contain 24 original multiple-choice questions. Practice and browser-saved progress work without login. An optional ASP.NET Core backend provides Google sign-in, account progress, and private portfolio drafts. The portfolio editor, two themes, Markdown import, and public-page support are implemented; public publishing is off by default pending deployment configuration. Billing and checkout are not enabled. Course notes, guides, and job listings are awaiting published content.
See the product roadmap for student validation, content growth, and future monetization work.
- Student experience
- Progress and optional accounts
- Current content
- Getting started
- Commands and CI
- Project structure
- Contributing
- Privacy and security
- License and attributions
ProCoderJii helps engineering students practise placement skills in short sessions and learn from their answers. Run the app locally to explore the implemented routes:
| Route | What it provides |
|---|---|
/learn |
A learner workspace with practice history, topic progress, and a suggested next step. |
/practice |
Quantitative aptitude, logical reasoning, verbal ability, and programming foundations. |
/practice/[topic] |
Multiple-choice practice sessions with scores, correct answers, and explanations. |
/games |
Pattern Sprint and Digit Recall: short reasoning and memory exercises. |
/account |
Optional Google sign-in and cloud progress controls when the backend is configured. |
/learn/portfolio |
In-memory guest preview; signed-in private drafts, Markdown import, theme choice, and explicit publication when enabled. |
/u/[username] |
A student's published snapshot; drafts, suspended or withdrawn pages return 404. |
/dashboard |
Engineering course, branch, and semester navigation for future reviewed notes. |
Questions are original learning exercises. They are independent of employer assessments and do not predict or guarantee hiring outcomes. The first question bank is intentionally small so it can be reviewed and improved before expanding.
The expanded placement-game catalogue remains separate work. For portfolios, start with the student journey and deployment runbook: guests can try the form, Google accounts save drafts, and students aged 18 or older can explicitly accept the publishing policy. Usernames stay fixed while the portfolio exists; draft edits remain private until published again. Search indexing is opt-in. Import the Markdown template or fill the same fields directly; both Simple and Developer themes use that model.
Repository features do not establish that the live site has been updated. Issue #74 tracks the outstanding production hosting work; see the deployment guide.
Anonymous practice saves the latest 100 completed attempts in the current browser. The learner workspace derives results from answers and the current question bank. Clearing browser site data removes that local history, and browser-only progress does not travel between devices.
The optional ASP.NET Core 10 backend provides Google sign-in and account progress through the frontend's same-origin API. Account progress is kept separate from guest progress. The backend authenticates requests, validates attempts against the shared question bank, and stores each student's own history using PostgreSQL, SQL Server, MongoDB, or local-development SQLite. See Backend setup and Docker setup for local persistence, Google credentials, and production integration checks.
Neon PostgreSQL is the selected hosted database, with separate runtime and migration connections. The guide covers configuration and production verification.
The free practice flow works without provider credentials. Paid plans, payment processing, and commercial account entitlements require separate product and provider decisions; this repository does not currently enable them.
| Area | Status |
|---|---|
| Placement practice | 24 questions across four topics, explanations, and saved session history. |
| Short games | Pattern Sprint and Digit Recall are playable without login; their scores are not saved. |
| Student portfolios | Form/live preview, Simple and Developer themes, Markdown import, authenticated drafts, and gated public pages with moderation. |
| Course catalogue | Course, branch, and semester navigation exists; no subjects or notes are published yet. |
| Guides | No reviewed guides published yet. |
| Jobs and internships | No reviewed listings published yet. |
| Latest videos | Optional public YouTube channel feed. |
Sample notes under src/content are intentionally unregistered. Follow the
content guide before publishing learning material. The
roadmap records longer-term priorities.
Use Node.js 24, npm, and Google Chrome for frontend browser checks. .nvmrc and
.node-version record the supported Node major. Install the .NET 10 SDK when working on the
backend or enabling account synchronization.
git clone https://github.com/procoderji-com/procoderji.git
cd procoderji
npm ci
npm run devOpen http://localhost:3000. No environment file is needed for practice and local progress. External contributors should follow the fork workflow.
Copy .env.example to .env.local only when enabling optional services:
| Variable | Purpose |
|---|---|
YOUTUBE_CHANNEL_ID |
Public channel ID for latest-video cards. |
NEXT_PUBLIC_SITE_URL |
Canonical site URL override, such as a staging origin. |
DOTNET_API_URL |
Optional server-only backend origin, such as http://localhost:5100. |
Google credentials belong in the backend's user-secrets or environment configuration, never in browser variables. Use the development guide for setup and troubleshooting, backend guide for accounts, and deployment guide for hosting.
| Command | Purpose |
|---|---|
npm run dev |
Start the local development server. |
npm run lint |
Run ESLint. |
npm run typecheck |
Check TypeScript types. |
npm test |
Run practice/progress, portfolio rules/import/client, content-validation and helper tests. |
npm run build |
Create the production build. |
npm run e2e |
Build with synthetic content and check frontend browser behavior; opt into the backend with E2E_DOTNET=1. |
npm run launch-check |
Build the real site and crawl links, sitemap, metadata, and SEO rules. |
dotnet test backend/ProCoderJi.slnx --configuration Release |
Run backend integration and validation tests. |
| CI job | Coverage |
|---|---|
| Lint, typecheck, tests and build | TypeScript, code quality, domain/store tests, and the production build. |
| Browser and SEO checks | Desktop/mobile flows, test-only .NET host using the real API/BFF, portfolio publication/moderation, Google challenge, and links/metadata. |
| Backend build and tests | The .NET solution build and tests for backend rules and access behavior. |
| Database contracts and container smoke | PostgreSQL, SQL Server and MongoDB contracts, Compose configuration, and the packaged API image. |
| Dependency review | Pull-request dependency changes checked for newly introduced high or critical vulnerabilities. |
These jobs need no Google credentials or other external secrets. Browser screenshots are
retained for seven days when the site-quality job fails. A deployed Google sign-in flow still
needs the configured-provider checks in Backend setup. Browser CI verifies
the challenge and public callback URL with test client configuration; it does not complete real
Google consent or token exchange. Full-stack portfolio checks use disposable accounts and
loopback-only fixtures in backend/tests/ProCoderJi.BrowserHost, which is excluded from the
production API image. The production API has no fixture login or moderation HTTP endpoint.
The E2E runner refuses to run when src/data or src/content has local changes because it
temporarily installs synthetic fixtures. See Development.
src/app/ Next.js routes, metadata, and backend-for-frontend API
src/features/practice/ Pure practice rules, question-bank adapter, and practice UI
src/features/progress/ Validated attempt records and browser progress storage
src/features/account/ Optional account-provider clients and controls
src/features/portfolio/ Portfolio rules, editor, Markdown import, themes, and public delivery
src/components/ Shared UI and landing-page sections
src/content/ Markdown and MDX learning content
src/data/ Course, guide, and job catalogues
src/lib/ Existing content, rendering, SEO, and game helpers
backend/ ASP.NET Core 10 API, persistence adapters, and backend tests
shared/practice/ Canonical question JSON used by TypeScript and .NET
shared/portfolio/ Portfolio validation rules and cross-runtime test fixtures
e2e/ Browser checks, fixtures, and production crawl
docs/ Development, architecture, content, and decision guides
.github/ CI, Dependabot, issue forms, and pull-request template
The Next.js frontend and .NET backend have clear boundaries in one repository. Read Architecture and ADR 0001 for the boundaries between learning rules, UI, storage, and providers.
Start with CONTRIBUTING.md and the documentation index. Check open issues before starting a larger feature and describe the student problem it solves. Contributors are expected to follow the Code of Conduct. For setup questions, bug reports and private concerns, follow Support. The maintainer guide explains triage, review and dependency updates.
| Contribution | Start here |
|---|---|
| Original questions and explanations | Question proposal, then the shared question bank. |
| Scoring, validation, or recommendations | Practice domain and its tests. |
| Saved progress behavior | Progress feature and its model/store tests. |
| Student interface and accessibility | Practice views and shared components. |
| Optional accounts, synchronization, or persistence | Backend setup, account feature, and the Next.js /api/platform/* proxy. |
| Portfolio editor, themes, import, or publication | Workspace guide, shared rules, and API contract. |
| Original notes, guides, and listings | Content guide. |
| Setup and contributor guidance | docs/ and the contribution guide. |
Submit original material or link to official sources. Do not copy notes, question banks, job descriptions, papers, or images without permission. Optional coding-agent tools and their upstream notices are documented in docs/agent-tools.md and THIRD_PARTY_NOTICES.md.
Read the site's privacy policy for data handling. Report vulnerabilities privately using SECURITY.md.
The project is available under the MIT License. Vendored agent tools retain their separate upstream notices; see THIRD_PARTY_NOTICES.md.
