Follow-ups from toolchain and local dx work
Los mantenedores suelen responder en 1 día
@tosind ya está trabajando en esto.
Desde el 21/10/2026.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
- Tipo de issue
- Refactorización
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- docker-compose, nextjs, playwright, postgresql, react, typescript
Línea de trabajo
This is a tracking issue, not a single task, so pick one unchecked item with a named file, such as the length checks in util/env.ts or the timeout in util/curriculum/fetchSuperblocksFromGraphQL.ts, and link your pull request to this issue. Read the file and the linked issues (#544, #556) first, then confirm the item is still open. Done means the listed behaviour is fixed or the reason for leaving it is recorded, with tests passing.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Stack #629 (#623 to #628) moved Classroom to pnpm 12, Node 26, Next 16, React 19, Tailwind 4, Prisma 7, Vitest, TypeScript, Playwright, oxlint and oxfmt. The reviews found these items. None of them blocks local development.
The sections are in priority order. Open a pull request for one section or one item, and link this issue.
1. Before production
The app is not deployed from this code yet. Do these before the first deploy.
-
prisma/prisma.ts:PrismaPggivesDATABASE_URLtopg.pgignores the Prisma-only parameters, andsslmode=requireacts asverify-full. Set the SSL options for the production database. -
package.json:postinstall: prisma generatefails on a production-only install, becauseprismais a devDependency. Generate the client in the build step, or moveprismato dependencies. -
pages/api/auth/[...nextauth].ts: whenDANGEROUS_ACCOUNT_LINKING_ENABLEDis true, check the Auth0email_verifiedclaim. -
util/env.ts: in production, refuse a shortNEXTAUTH_SECRETand anhttp://NEXTAUTH_URL. - #544
2. Sign in and environment checks
-
pages/api/auth/dev-login.ts: browsers sendSec-Fetch-Siteonly to HTTPS or localhost. On a plain-http dev host, such as a LAN address, a cross-site form POST has no such header and passes. WhenOriginis present, require its host to equalx-forwarded-hostorhost. Test this in Codespaces first. -
pages/api/auth/dev-login.ts: return 400 when the body is not an object, for example atext/plainform. Now such a request signs in as the default teacher. -
util/env.ts: theAUTH0_DOMAINcheck lets?and#through, and its message does not mention ports. Match a host name pattern instead. -
pages/api/create_class_teacher.tsandpages/api/editclass.ts: check the name and description length. The form limits them to 100 and 500 characters (components/ClassModal.tsx), but a direct API call can save a longer value. See #556.
3. Team decisions
- #633
- #631
- #632
4. Local development
-
pages/signin.tsx: redesign the development sign in page. It does not say what it is for. TheEmaillabel touches an unstyled input that cuts off the address. The button is full width, but the other content is centered. The seeded users show as one centered bullet. Explain that the page is for local development only, and let the user select a seeded user by role (admin, teacher, student). -
pages/dashboard/v2/[id].tsx: when the mock data server (port 3002) is not running, the page shows "0 students" and asks the user to contact support, and the server writes no log line. In development, log the failure and tell the user to runpnpm run mock-fcc-data. See #606. - Local development closer to production: discuss whether Classroom runs against a local freeCodeCamp API by default, in place of the mock data server.
-
docker-compose.yml: pin thepostgres:16and devcontainer images by digest. Done in #651.
5. CI
- Make "End-to-end tests" a required check when the job is stable.
-
CI: cache the Playwright browser.Dropped: the Playwright docs advise against it, because restoring the cache takes about as long as the download (https://playwright.dev/docs/ci). -
util/curriculum/fetchSuperblocksFromGraphQL.ts: the curriculum GraphQL call has no timeout. CI and the end-to-end tests depend on it. -
util/curriculum/fetchSuperblocksFromGraphQL.tsandutil/fcc-api.ts: check the shape of the curriculum GraphQL and freeCodeCamp API responses, and show a clear error when it changes. Replaces #410 and #506.
6. Tooling configuration
-
.npmrc:engine-strict=truehas no effect in pnpm 12. Remove it, or use the pnpm setting. Done in #646. -
pnpm-workspace.yaml: replacestrictPeerDependencies: falsewithpeerDependencyRules.allowedVersionsfor the known peers. Done in #646. -
.oxlintrc.json:react/unsupported-syntaxand thereact/hooksrules are off. Turn them on, or give the reason. Done in #649. - oxlint
suspicious: warngives about 30 warnings. Fix them, or turn the rules off. #649 fixed 17. Left: 4react/set-state-in-effectand 4jsx-a11ywarnings (they change component behaviour, so they need a review), 3no-array-sortincomponents/ClassModal.tsx(toSorted()needs Firefox 115, and Next.js targets Firefox 111), 1no-shadowinpages/classes/index.tsx(#630 changes that file), and 1vitest/no-conditional-tests. -
.oxfmtrc.json: format-check.github/. Done in #647. -
tsconfig.json: thevitest/globalstypes apply to app code, and editors lose the test globals. Split the types between the two tsconfig files. Already done onmain:tsconfig.jsonhas"types": ["node"], andtsconfig.test.jsonaddsvitest/globals. - Issue forms: remove
value:from required fields. Done in #647.
7. Code cleanup
- Delete
pages/api/hello.ts,components/dashTabs.module.cssandutil/api_proccesor.ts. They have no users. Done in #648. -
pages/dashboard/v2/details/[id]/[studentEmail].tsx: remove theas StudentDashboardDatacast on a partial object (mock mode). - Old
/dashboard/<id>links return 404 after the v1 dashboard removal. Add a redirect, or accept the 404.
8. Missing tests
-
NODE_ENVunset. Done in #650. - Encoded redirect values in
safeCallbackPath. Done in #650. - The
instrumentation.tsexit. Done in #650. - A reload after "create class". Done in #650.
- Lenguaje dominante
- TypeScript
- Estrellas
- 156
- Forks
- 141
- Merge medio
- 23 h 8 min
- PR fusionados (30 d)
- 37
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de freeCodeCamp/classroom
-
Bug: Classrooms can be created with no certificationsPosiblemente ocupada @TsaH0 la tomó hace 76 días. Abiertobug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
freeCodeCamp/classroom#551 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Feature: Improve teacher feedback for fetch failures and empty classroomsQuizá libre de nuevo @NewtonLC la tomó hace 123 días y no hay ningún pull request abierto. Abierto
freeCodeCamp/classroom#606 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
feat(UI): Enhancement to the admin dashboard page issue - search barQuizá libre de nuevo @gauravi-2007 la tomó hace 11 días y no hay ningún pull request abierto. Abierto
freeCodeCamp/classroom#550 · 8 comentarios ·
Los mantenedores suelen responder en 1 día
-
Feature Request: Enable Exporting Student Progress Data (CSV/PDF)Quizá libre de nuevo @gauravi-2007 la tomó hace 11 días y no hay ningún pull request abierto. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 32/100
freeCodeCamp/classroom#547 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
ToS + privacyQuizá libre de nuevo @raisedadead la tomó hace 549 días y no hay ningún pull request abierto. Abierto
freeCodeCamp/classroom#544 · 2 asignados ·
Los mantenedores suelen responder en 1 día
Todos los issues de freeCodeCamp/classroom
Issues similares
-
level/task type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
wazuh/wazuh-dashboard-plugins#9508 ·
Los mantenedores suelen responder en 1 día
-
Testnet EOL page links Zonescan mainnetPosiblemente ocupada @napelvs la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Azure-Samples/azure-search-openai-demo#3249 ·
Los mantenedores suelen responder en 1 día
-
[Docs] docs/architecture.mermaid leaves out 21 of the 51 src/ directoriesPosiblemente ocupada @uyg7x la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
enhancement status:needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
dongdongbh/Mindwtr#1438 ·
Los mantenedores suelen responder en 1 día