Lexiverse
Lexiverse - AI contextual reading engine for English learners. Your next article is your next review.
Student Enrollment and Dashboard work
Translation pending
EducationJavaScript · CSSGitHub @InternationalSchoolingAppOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗This is a Next.js project bootstrapped with create-next-app.
Student Signup migration for is-rest-api (International Schooling) — see the migration plan doc for full context. Backend Java/Spring Boot code is unchanged; only this frontend is new.
The Spring Boot backend authenticates via a plain server-side session cookie — no Spring Security/JWT. For captcha validation and login to work, this app and the backend must share that session cookie, which requires being on the same domain in production.
Local dev: next.config.mjs's fallback rewrites() forwards paths not handled by a Next.js route to NEXT_PUBLIC_BACKEND_BASE_URL, without adding a URL prefix. The browser sees Next.js and the backend as one origin. Enable it with NEXT_PUBLIC_USE_LOCAL_PROXY=true in .env.local (see utils/backendOrigin.js).
Production/staging: this repo cannot configure the real infra reverse proxy — that needs coordination with whoever manages it. The equivalent Nginx rule to mirror what next.config.mjs does locally:
location / {
proxy_pass http://<spring-boot-backend-origin>/;
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
}
location ~ ^/[^/]+/student/[^/]+/[^/]+ {
proxy_pass http://<next-js-app-origin>;
}
Once that's in place, set NEXT_PUBLIC_BACKEND_BASE_URL to the direct backend origin for local development, or to the same origin when a reverse proxy routes backend paths there.
Service key (SMS_SERVICE_KEY, server-only): this server's key for SMS, sent as X-Service-Key on its calls made before anyone signs in (school info, settings, the enrollment start, maintenance status, IP location). It must be one of the secrets in SMS's auth.service.keys (AUTH_SERVICE_KEYS, entries is-sms-YYYY-MM-DD:<secret>). Rotate it every 30 days: add the new key on SMS next to the old one, switch SMS_SERVICE_KEY, then remove the old one from SMS. Never give it a NEXT_PUBLIC_ prefix.
UAT previously had to be configured with exactly one backend URL at a time (NEXT_PUBLIC_BACKEND_BASE_URL), so testing against a different UAT instance meant a redeploy. A floating "UAT backend" picker (bottom-right of every page) lets each tester point their own browser at any backend origin instead — pick one from the preset list in constant/UatBackendUrls.js or type a custom http://ip:port. The choice is stored per-browser (a cookie, so it also reaches server-side calls) and persists until reset.
The picker only renders when NEXT_PUBLIC_DEPLOYMENT_MODE is DEV or UAT — it's always off on PROD, where the cookie is ignored even if somehow present.
IP location lookups are a direct browser-side GET to pro.ip-api.com (services/ipLocationClientApi.js) — no backend hop, no Server Action, no CORS concerns, same as the legacy Java pages' own browser-side call. Enrollment refreshes this location before submitting step 1, so network or VPN changes after page load are reflected. A failed refresh stops submission with the existing retry message. This is unaffected by the UAT backend switcher below. Other backend calls continue to use Server Actions. Full-page navigations still use resolveBackendOrigin().
Route change: the student-signup account page moved off the /student-enroll prefix onto the exact same URL pattern the JSP app itself serves — /{schoolId}/student/{enrollmentFor}/{learningProgram} (app/[schoolId]/student/[enrollmentFor]/[learningProgram]/page.jsx), matching ClientSignupStudentController#signupStudent in is-rest-api. This means Next.js and the JSP app now claim the same root-level path space; whoever owns the real reverse proxy needs to route that specific pattern to the Next.js origin instead of (or ahead of) the JSP backend for it to actually take over those URLs — this repo cannot configure that itself, same as the /backend proxy above.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.js. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.