feat: modular synth, sandbox, code editor, pixel editor, Docker deployment

Synth:
- Modular synth with Tone.js: oscillator, LFO, noise, filter, envelope, VCA, mixer, delay, reverb, distortion, output
- Keyboard widget (mini SVG + fullscreen piano + computer keys Z-M/Q-I)
- Drum pad (4x4 grid, 16 pads with MIDI notes, matching reaktor)
- Sequencer (SVG bar grid with pitch/gate editing, matching reaktor)
- Live modulation visualization (LFO waveform simulation, envelope, noise)
- Knob with drag, wheel, double-click inline edit, modulation glow ring
- Pan/zoom viewport, bezier wires colored by port type
- Play/Stop audio lifecycle, stereo output with Tone.Merge

Sandbox:
- New /sandbox page with all editors in freeform mode
- Synth fills full viewport height

Workbenches:
- Code Editor (Monaco) with test cases
- Signal Playground (Web Audio oscillator + filter + visualizer)
- Pixel Editor (grid canvas with palette and match mode)

Deployment:
- Dockerfile (multi-stage Next.js standalone build)
- .dockerignore
- next.config.ts output: standalone
- Gitea remote configured

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jose Luis Montañes
2026-03-26 14:09:14 +01:00
parent 8d8a811ede
commit 75ee19f8a3
20 changed files with 2956 additions and 4 deletions

20
Dockerfile Normal file
View File

@@ -0,0 +1,20 @@
# Stage 1: Build
FROM node:20-alpine AS build
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm ci --include=dev
COPY . .
RUN npm run build
# Stage 2: Production
FROM node:20-alpine
WORKDIR /app
ENV NODE_ENV=production PORT=80
# Copy standalone output
COPY --from=build /app/.next/standalone ./
COPY --from=build /app/.next/static ./.next/static
COPY --from=build /app/public ./public
EXPOSE 80
CMD ["node", "server.js"]