GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - javaBin/frosting: Frontend for cupcake

BranchesTags
Open more actions menu

Latest commit

 

History

495 Commits
495 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
app
app
 
 
public
public
 
 
server
server
 
 
terraform
terraform
 
 
.gitignore
.gitignore
 
 
.prettierignore
.prettierignore
 
 
.prettierrc
.prettierrc
 
 
CLAUDE.md
CLAUDE.md
 
 
Dockerfile
Dockerfile
 
 
README.md
README.md
 
 
app.yaml
app.yaml
 
 
eslint.config.mjs
eslint.config.mjs
 
 
mise.toml
mise.toml
 
 
nuxt.config.ts
nuxt.config.ts
 
 
package.json
package.json
 
 
pnpm-lock.yaml
pnpm-lock.yaml
 
 
pnpm-workspace.yaml
pnpm-workspace.yaml
 
 
renovate.json
renovate.json
 
 
tsconfig.json
tsconfig.json
 
 

Repository files navigation

Frosting

Vue 3 / Nuxt frontend for cupcake. Lets javaBin heroes (helter group) browse JavaZone conferences and sessions to find potential speakers for local events.

Tech stack

  • Framework: Nuxt (SPA mode)
  • UI: Nuxt UI + Tailwind CSS
  • Auth: OIDC Authorization Code flow via oidc-client-ts
  • Icons: Nuxt Icon (Carbon, Lucide, Logos, OpenMoji)
  • Metrics: Prometheus via @artmizu/nuxt-prometheus
  • Package manager: pnpm

Pages

Route Description
/ Home — shows authenticated user and role check
/conference/[conferenceId] Session browser with filtering for a conference
/conference/[conferenceId]/session/[sessionId] Session detail with full speaker info (bio, email, location)

Authentication

The app uses the OIDC Authorization Code flow. Tokens are stored in browser sessionStorage. All API requests are automatically sent with a Bearer token, and a 401 response triggers a silent refresh before retrying.

Access requires membership in the helter group in Cognito. The home page displays a warning if the authenticated user is not a member.

Local development

Install dependencies:

pnpm install

Start the dev server (proxies /api/* to http://127.0.0.1:8080 by default):

pnpm dev

The cupcake backend must be running locally unless you override CUPCAKE_BACKEND.

pnpm dev loads local.env (gitignored) if it exists. Login is off in dev by default. To test with login, set JWT_ENABLED=true in local.env here and in cupcake's. Both then use the prod Cognito pool; its public client allows http://localhost:3000/ as a callback and logout URL, so you sign in with your @java.no Google account as in prod. You need to be in the helter group. Production builds always require login.

Preview a production build

pnpm build
pnpm preview

Linting

pnpm lint        # check
pnpm lint:fix    # auto-fix

ESLint and Prettier are also enforced via pre-commit hooks (lint-staged).

Configuration

Environment Variable Description Default
CUPCAKE_BACKEND Backend base URL for the server-side proxy http://127.0.0.1:8080 (dev) / https://cupcake-backend.javazone.no (prod)
CUPCAKE_FRONTEND Hostname the dev server allows (Vite allowedHosts) localhost
NUXT_PUBLIC_OIDC_AUTHORITY OIDC authority (issuer) URL Cognito internal pool issuer
NUXT_PUBLIC_OIDC_CLIENT_ID OIDC client ID The prod public Cognito client
JWT_ENABLED true turns login on under pnpm dev unset (login off in dev, always on in production builds)

In the platform deployment the OIDC values are injected via auth.env in app.yaml (aliases of COGNITO_ISSUER_URL and COGNITO_CLIENT_ID for the platform-created public Cognito client). The defaults are the same prod values, so local login needs no OIDC settings.

Proxy middleware

The Nuxt server middleware proxies /api/* (except /api/_nuxt_icon) to the cupcake backend, keeping API calls same-origin. It streams responses and gzips JSON for browsers that accept it.

This keeps the frontend and backend on the same origin from the browser's perspective, avoiding CORS issues.

Docker

The javaBin platform builds and pushes the deployed image (see CI/CD). To build locally:

docker build -t frosting .

The image uses a multi-stage build (Node build stage, slim runtime stage) and serves via the Nitro server on port 3000.

CI/CD

Trigger Workflow What it does
Push to main deploy.yaml The javaBin platform workflow runs pnpm build and pnpm test (which is pnpm check: lint, format check, typecheck), then builds the image and deploys it. Nothing deploys if either fails
Pull request deploy.yaml Platform build and Terraform plan, no deploy
Pull request pr.yaml Runs pnpm check and pnpm build

About

Frontend for cupcake

Resources

Readme
Activity
Custom properties

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.