Project Info
Inspiration
A lot of students and junior developers can build surprisingly complex projects with AI, but there is a problem: the application may work even when the person who created it does not fully understand the code. I experienced this myself while building with AI. It is easy to ask a model to generate a feature, fix an error, or connect a frontend to a backend. It is much harder to explain why the architecture works, where validation happens, what the security limitations are, or how to modify the project without depending completely on AI. That problem inspired OwnYourCode. The main idea is simple: AI may help you build the code, but OwnYourCode helps you understand, verify, and defend it. What OwnYourCode does OwnYourCode turns a software project into a personalized learning experience. A learner can provide a public GitHub repository, and the application performs a bounded repository inspection. It detects confirmed technologies, languages, manifests, and architecture evidence without cloning the repository or pretending to understand files it has not inspected. From that evidence, OwnYourCode creates a guided learning flow: Inspect the repository Learn how its architecture works Complete an evidence-based assessment Solve a verified coding lab Repair a security configuration challenge Defend architecture decisions Review a transparent learning summary The AI is used for explanation and evaluation where human language matters. Deterministic validation remains authoritative for code structure, fixed checks, evidence selection, and completion gates. The public demo is session-only and can be tried without creating an account. Signed-in users can also save projects, return after a refresh or logout, archive projects, and resume a persisted Existing Repository learning workspace. New Idea projects can already be stored, with a larger Build From Scratch learning workflow planned next. How I built it OwnYourCode is a full-stack application built with: React, TypeScript, and Vite for the frontend FastAPI and Python for the API PostgreSQL and SQLAlchemy for persistent data Alembic for database migrations Clerk for authentication Docker Compose for the local environment GitHub APIs for bounded public repository inspection OpenAI models for evidence-grounded lesson generation and explanation evaluation The application follows a modular-monolith architecture. The frontend sends validated requests to FastAPI. The backend validates them with Pydantic, verifies the authenticated user, scopes saved projects by owner, and performs the repository or learning operation. Repository evidence is collected deterministically before it is sent to the model. Model output is structured and validated again before it is returned or persisted. For the coding labs, learner code is parsed using Python's AST. It is never executed inside the API process. The security challenge also uses a server-owned teaching fixture and does not claim to scan the actual repository. Persistent learning workspaces use immutable inspection snapshots, versioned learning definitions, saved attempts, context fingerprints, idempotency protection, and server-calculated progression. How I used Codex I used Codex as an implementation partner throughout the project, including GPT-5.6 for part of the build. My role was to define the product, architecture, safety boundaries, user experience, and acceptance criteria. I reviewed implementation plans, tested the application in the browser, found integration and UX bugs, and repeatedly refined the generated code. Some examples include: separating AI explanation from deterministic verification; preventing arbitrary learner-code execution; designing ownership checks for persisted projects; identifying scrolling, CORS, form-control, and stage-progression bugs; restructuring the interface from one long page into a staged learning workspace; preserving the public demo while adding authenticated persistent projects. Codex accelerated implementation, but the product direction, trade-offs, testing, and final decisions remained my responsibility. Challenges One major challenge was preventing the application from making unsupported claims about a repository. The solution was to create a bounded evidence catalog and require generated lessons and evaluations to reference only confirmed evidence IDs. Another challenge was designing practical verification without running arbitrary code. I solved this with constrained server-owned fixtures and AST-only validation. Authentication and persistence introduced additional complexity. Every protected project query has to be scoped to the authenticated owner, migrations must remain reproducible, and learning progress must survive refreshes without trusting completion flags sent by the browser. The frontend also required several iterations. Early versions were one long scrolling page. I redesigned the flow into focused stages with explicit Continue and Back actions, fixed unwanted scrolling, improved accessibility, and created a more polished liquid-glass visual system. What I learned This project taught me that building with AI is not only about writing prompts. I learned how to think about: frontend and backend boundaries; API validation; authentication and authorization; database migrations and ownership; model-output validation; idempotent requests; deterministic versus model-based evaluation; safe code analysis; accessibility and real browser testing. Most importantly, I learned that working software is not the same as understood software. That is the exact problem OwnYourCode is trying to solve.
What's next
The next step is to expand saved projects into deeper multi-module learning paths. Existing Repository projects will receive several practical modules based on confirmed repository evidence. New Idea projects will become guided Build From Scratch experiences with architecture decisions, milestones, practical tasks, verification, and a final defense. The long-term goal is not to stop developers from using AI. It is to help them remain the engineers responsible for what AI helps them create.
OwnYourCode
AI helped you build it. OwnYourCode helps you understand, secure, and defend it.
OwnYourCode is an adaptive software-engineering learning platform for beginner and junior developers who use AI coding tools but do not yet fully understand the code they build.
The platform transforms an existing repository—or a new project idea—into a personalized learning path with lessons, code-tracing exercises, quizzes, verified coding labs, security challenges, and architecture oral defenses.
The Problem
AI coding tools allow developers to build applications faster than ever, but many users ship code they cannot confidently explain, debug, secure, or scale.
This can lead to:
- hardcoded secrets and exposed
.envfiles; - insecure configurations;
- misunderstood code execution;
- deployment failures;
- vulnerable dependencies;
- architectural decisions the developer cannot defend;
- complete dependence on AI for every future change.
OwnYourCode turns AI-assisted development into an active learning process.
How It Works
Learn
↓
Predict
↓
Explain
↓
Apply
↓
Execute
↓
Verify
↓
Defend
↓
Adapt the next lesson
The model can teach and interpret, but only deterministic tests, code execution, and security scans can prove that a solution works.
Planned MVP
Understand My Repository
- Analyze a public GitHub repository
- Detect the stack, architecture, and important concepts
- Generate repository-grounded lessons
- Create code prediction and explain-back challenges
- Detect selected security and configuration risks
- Turn findings into guided learning exercises
- Verify coding labs with real execution and tests
- Track misconceptions and progress
Build From Scratch
- Start from a project idea
- Define users, requirements, and core flows
- Learn architecture and technology choices
- Build the project through guided milestones
- Complete testing, security, and scaling challenges
- Defend the final architecture
Ask & Learn
- Ask general software-engineering questions
- Apply concepts directly to the learner's project
- Receive adaptive explanations based on current progress
What Makes It Different
A generic AI tutor answers questions.
OwnYourCode requires evidence that the learner understands:
- code-output prediction;
- line-by-line explanations;
- counterfactual questions;
- verified coding labs;
- security remediation;
- architecture trade-offs;
- scaling and reliability defenses.
Ownership Score
Progress will be based on measurable evidence, including:
- correct code predictions;
- explanation quality;
- completed labs;
- tests passed;
- number of hints required;
- security findings understood and fixed;
- architecture decisions successfully defended.
The score will not be invented by the language model.
Architecture
OwnYourCode uses a modular monolith with a separate isolated execution worker for running supported code, tests, and security checks.
See the full architecture document:
Planned Technology Stack
Frontend
- React
- TypeScript
- Monaco Editor
Backend
- FastAPI
- PostgreSQL
- Pydantic
- SQLAlchemy
AI
- OpenAI models for personalized learning, evaluation, and adaptive questioning
- Provider-agnostic LLM gateway
- Structured model outputs
Verification
- Isolated execution worker
- Deterministic tests
- Security and configuration checks
- Reproducible demo repositories
Project Status
Phase 11A adds a separate authenticated /app foundation with Clerk-backed
identity, owner-scoped projects, PostgreSQL migrations, and persisted Existing
Repository or New Idea project sources. It deliberately does not yet persist
inspection results, lessons, activities, attempts, learning paths, or progress.
The authenticated project detail truthfully says that learning-workspace
persistence is coming next.
The public /projects/new demo remains available without an account. Its
inspection, lesson, assessment, lab, security challenge, oral defense, and
Preview Ownership Score remain explicitly browser-session-only and are not
saved to authenticated projects.
Initial Repository Structure
ownyourcode/
├── docs/
│ └── architecture.md
├── README.md
├── .gitignore
└── .env.example
Local Development
Prerequisite: Docker Desktop with Docker Compose v2.
In PowerShell, create your local development configuration and start the services:
Copy-Item .env.example .env
docker compose up --build -d
docker compose exec api alembic upgrade head
Verify the API and run the tests:
Invoke-RestMethod http://localhost:8000/healthz
docker compose exec web npm run test -- --run
The frontend is available at http://localhost:5173; the FastAPI docs are at
http://localhost:8000/docs. Stop the stack with docker compose down.
The PostgreSQL integration suite requires a separately created, explicitly
named test database. Do not point TEST_DATABASE_URL at the application
database:
docker compose exec db createdb -U ownyourcode ownyourcode_test
docker compose exec -e TEST_DATABASE_URL='postgresql+psycopg://ownyourcode:ownyourcode@db:5432/ownyourcode_test' api pytest
Environment Variables
Copy .env.example to .env and retain local values only. The API uses
CORS_ORIGINS for the browser allow-list and VITE_API_BASE_URL for the
browser's public API address. GITHUB_TOKEN is optional and backend-only: it
can improve GitHub API limits, but is never sent to the browser or returned by
the API. OPENAI_API_KEY and OPENAI_MODEL are backend-only and required only
for lesson generation; never expose them through Vite variables or commit them.
Development Principles
- The learner must do the thinking.
- The model may teach, guide, and evaluate explanations.
- Tests and execution provide the final proof.
- Untrusted code must never run inside the main API process.
- Repository secrets must not be sent to the model.
- Roadmap features must not be presented as implemented.
Built During OpenAI Build Week
OwnYourCode is being designed and developed during OpenAI Build Week.
Architecture, product scope, learning methodology, security boundaries, and implementation decisions are documented throughout the repository.
Author
Mihai Catana
Analysis
View
Metric
- 18
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- HTMLIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- TypeScriptIn code
- PostgreSQLClaimed
7 of 8 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
1.1 MB
Source files
162
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
katanna13/ownyourcode
175 files · 1.2 MB · @ 603554c
Structure
Interface
28 files · 16%Screens, components and styles rendered to the user.
API & routing
75 files · 43%Request entry points: routes, handlers and controllers.
Application logic
10 files · 6%Domain rules, services and shared utilities.
Data & schema
9 files · 5%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python63%
- TypeScript29%
- CSS4%
- Markdown4%
- YAML0%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
apps/web/package.json
npm · 12- @clerk/react
- react
- react-dom
- react-router-dom
- +8 more
apps/api/pyproject.toml
pypi · 10- alembic
- clerk-backend-api
- fastapi
- httpx
- openai
- psycopg[binary]
- pydantic-settings
- sqlalchemy
- uvicorn[standard]
- +1 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.