Initial commit: establish deterministic rod-string solver stack.

Set up the C solver core, Node API orchestration, TS GUI workflow, and engineering documentation with cleaned repo hygiene for private Git hosting.

Made-with: Cursor
This commit is contained in:
2026-04-16 21:59:42 -06:00
commit 725a72a773
83 changed files with 14687 additions and 0 deletions

29
Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
FROM node:20-alpine AS api-deps
WORKDIR /app/solver-api
COPY solver-api/package.json solver-api/package-lock.json* ./
RUN npm install
FROM node:20-alpine AS gui-deps
WORKDIR /app/gui-ts
COPY gui-ts/package.json gui-ts/package-lock.json* ./
RUN npm install
FROM alpine:3.20 AS solver-build
RUN apk add --no-cache build-base
WORKDIR /app
COPY solver-c ./solver-c
RUN SRCS="./solver-c/src/solver_common.c ./solver-c/src/json_stdin.c ./solver-c/src/trajectory.c ./solver-c/src/solver_diagnostic.c ./solver-c/src/solver.c ./solver-c/src/solver_fea.c ./solver-c/src/solver_fourier.c" \
&& gcc -std=c99 -I./solver-c/include $$SRCS ./solver-c/src/main.c -lm -o ./solver-c/solver_main \
&& gcc -std=c99 -I./solver-c/include $$SRCS ./solver-c/src/main_fea.c -lm -o ./solver-c/solver_fea_main \
&& gcc -std=c99 -I./solver-c/include $$SRCS ./solver-c/tests/test_solver.c -lm -o ./solver-c/test_solver \
&& ./solver-c/test_solver
FROM node:20-alpine AS ci
WORKDIR /app
COPY --from=solver-build /app/solver-c ./solver-c
COPY --from=api-deps /app/solver-api/node_modules ./solver-api/node_modules
COPY --from=gui-deps /app/gui-ts/node_modules ./gui-ts/node_modules
COPY solver-api ./solver-api
COPY gui-ts ./gui-ts
COPY data ./data
CMD ["sh", "-c", "cd /app/solver-api && npm test && cd /app/gui-ts && npm test"]