Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
FROM node:22.14.0-bookworm-slim

WORKDIR /workspace

# The Compose dependency volume is mounted at /workspace/node_modules. Seed it
# with ownership that matches the non-root user used by the dev container.
RUN mkdir -p /workspace/node_modules \
&& chown -R node:node /workspace

USER node
CMD ["sh", "-c", "npm ci && npm run dev -- --host 0.0.0.0"]
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
# ClassFinder

ClassFinder will help students enter classes and receive campus directions. The repository currently contains the development infrastructure only; production application code, screens, routing logic, and campus data have not been created.
ClassFinder will help students enter classes and receive campus directions. The repository now contains the initial Vite/React application shell; class-entry behavior, routing logic, and campus data are still being built.

## Repository map

- `infrastructure_plan.md` — selected infrastructure decisions.
- `package.json` — npm scripts and development dependencies.
- `Dockerfile`, `compose.yml`, `.dockerignore` — reproducible Node.js development environment.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need an actions.yml, or build.yml

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't believe so, I think the original setup Codex gave us should be satisfactory for now.

- `scripts/` — infrastructure-only verification.
- `index.html` — Vite's browser document shell.
- `src/` — React application source, with `main.tsx` as the entrypoint and `App.tsx` as the root component.
- `tests/` — future unit, UI, and end-to-end test locations; no product tests exist yet.
- `.github/workflows/` — pull-request checks and GitHub Pages release deployment.
- `.agents/skills/` — project-provided agent skills.
- `src/` — not created yet; application implementation owns this directory.

## Getting Started

Expand All @@ -31,7 +32,7 @@ On a host with Node.js 22 LTS installed, run:
npm ci
```

Or start the development environment with Docker after application code provides the Vite entrypoint:
Or start the development environment with Docker:

```sh
docker compose up --build
Expand All @@ -56,7 +57,7 @@ npm run test:smoke
docker compose config
```

`npm run build` is intentionally not runnable until the application implementation adds Vite's `index.html` and entrypoint. The test commands currently validate the configured harness and pass with no product tests; application work must add meaningful tests before relying on coverage.
The test commands currently validate the configured harness and pass with no product tests; application work must add meaningful tests before relying on coverage.

## GitHub configuration

Expand All @@ -67,4 +68,12 @@ The release workflow deploys version tags to GitHub Pages. Before its first rele
- **`docker` is not recognized or the daemon is unavailable:** Start Docker Desktop (or the Docker service) and rerun `docker version`.
- **Dependency install fails:** Use Node.js 22 LTS and rerun `npm ci`; do not mix npm with another package manager.
- **Port is already in use:** Stop the process using the future Vite development port or change the Compose port mapping when application development begins.
- **Docker reports an npm permission error:** Recreate the dependency volume after a prior run created it with root ownership:

```sh
docker compose down -v
docker compose up --build
```

The `-v` removes only the local `node_modules` volume; dependencies will be installed again from `package-lock.json`.
- **GitHub Pages deployment fails:** Confirm Pages is enabled for GitHub Actions and that the repository allows the workflow's `pages: write` and `id-token: write` permissions.
16 changes: 16 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
name="description"
content="ClassFinder helps students find directions between campus classes."
/>
<title>ClassFinder</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading