Skip to content

Latest commit

 

History

History
225 lines (176 loc) · 13.9 KB

README.md

File metadata and controls

225 lines (176 loc) · 13.9 KB
ProCoderJii logo

ProCoderJii Learning Hub

Practise for campus placements. Understand your answers. Build a study habit.

A student learning workspace with original practice questions, explanations, and saved progress.

Website · Documentation · Roadmap · Good first issues · Report a bug · Propose a question

CI License: MIT Next.js TypeScript Good first issues

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.

Guest learning workspace before the first session

See the product roadmap for student validation, content growth, and future monetization work.

Contents

Student experience

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.

Progress and optional accounts

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.

Current content

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.

Getting started

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 dev

Open 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.

Commands and CI

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.

Project structure

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.

Contributing

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.

Privacy and security

Read the site's privacy policy for data handling. Report vulnerabilities privately using SECURITY.md.

License and attributions

The project is available under the MIT License. Vendored agent tools retain their separate upstream notices; see THIRD_PARTY_NOTICES.md.