Commit Graph
338 Commits
Author SHA1 Message Date
maulanasdqnandClaude Opus 4.6 54ebcf1a1e docs: update CLAUDE.md with project architecture and conventions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 14:04:03 +07:00
maulanasdqnandClaude Opus 4.6 9dabbb625d fix(nix): update npmDepsHash after dependency upgrades
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 14:00:29 +07:00
maulanasdqnandClaude Opus 4.6 3f4461c65c chore: upgrade dependencies, restructure shared libs, and fix UI
- Upgrade Nx 22.1.1 → 22.6.3 and all patch/minor dependencies
- Restructure shared libs: move business logic from utils to service
- Consolidate shadcn-ui into ui lib with atomic design pattern
- Fix container centering for landing app (Tailwind v4 compatibility)
- Fix button styling by updating @source directive in globals.css
- Fix SiCss3 → SiCss rename in react-icons 5.6
- Fix duplicate useSession export conflict
- Remove dead code, comments, and unused files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 01:44:17 +07:00
maulanasdqnandClaude Opus 4.6 f68d97188c ci: only build affected apps using nx affected + matrix strategy
Skip unchanged apps to speed up CI. Uses nx affected to detect
which apps need rebuilding, then runs nix builds in parallel
via GitHub Actions matrix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 23:32:18 +07:00
maulanasdqnandClaude Opus 4.6 f882668e7f ci: update infra flake.lock on merge to develop
After building and pushing to Cachix, the CI now clones
imphnen-infrastructure and updates its flake.lock to point
to the latest frontend service commit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 23:21:58 +07:00
Maulana SodiqinandGitHub dab4fa4941 Delete .direnv directory 2026-03-30 23:10:03 +07:00
maulanasdqnandClaude Opus 4.6 bbb1bae909 chore: migrate to Nix flakes, remove Docker and legacy configs
Remove all Docker files, Vercel config, Verdaccio, and old CI workflow.
Standardize on nodejs_22 across devShell and nix build helpers.
Update CI to build all packages and push to Cachix on merge to develop.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 23:05:37 +07:00
Hafid NurandGitHub 3de1748f12 fix(qr): Empty State (#76)
* fix(qr): add empty state for campaign & user management page to handle unexcepted null error

* fix(qr): fix empty state logic in the user management page
2026-02-23 10:06:08 +07:00
Hafid Nur a610e180ba fix(qr): update API url to https 2026-02-14 18:29:30 +07:00
Hafid Nur ce8cb8188c fix(qr): hardcode API url 2026-02-14 18:13:28 +07:00
maulanasdqn 3aaf022393 feat(infra): update to include all apps and CI/CD flow 2026-02-14 18:03:58 +07:00
Hafid Nur ebe27a3f05 fix: update API endpoint for QR campaign app 2026-02-14 17:57:03 +07:00
maulanasdqn f846a5a785 fix: use nodejs binary instead of nodejs_22 (cached) 2026-02-14 17:43:42 +07:00
maulanasdqnandClaude Opus 4.5 708cbde596 fix: update npmDepsHash for CI build
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-14 17:29:40 +07:00
Hafid NurandGitHub 9d37cba65f Add a new app: QR code generator for campaign (#75)
* Initialize a new NX project - QR campaign

* Develop QR code generator app for campaign

* Add deployment script

Add Dockerfile, docker compose, and update Nix config for deployment

* Revert package.json to fix ci

* Revert package-lock.json to ensure ci (Nix build & cache) successful
2026-02-14 17:15:46 +07:00
maulanasdqnandClaude Opus 4.5 8728d0abd7 feat(landing): add Powered By Ancikri badge to hero section
Add clickable "Powered By Ancikri" badge beside the community badge
with matching pill design, linking to ancikri.com

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:58:35 +07:00
maulanasdqnandClaude Opus 4.5 1f4f4ddaa1 feat(landing): add Powered by Ancikri to footer
Add clickable "Powered by Ancikri" link in the footer
pointing to ancikri.com

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:38:19 +07:00
maulanasdqnandClaude Opus 4.5 4fcc249ff4 ci: add Nix build workflow with Cachix
- Build all packages (landing, backoffice, gacha, dimentorin, hackathon, infra)
- Push to msdqn Cachix cache
- Server can pull pre-built packages from Cachix

Requires CACHIX_AUTH_TOKEN secret in GitHub repository settings.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:23:45 +07:00
maulanasdqnandClaude Opus 4.5 c2bed98b06 security: patch Next.js RCE vulnerability (CVE-2025-55182)
Upgrade Next.js from 16.0.8 to 16.0.10 to fix critical RCE
vulnerability (CVSS 10.0) in React Server Components.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:09:51 +07:00
maulanasdqn ae1864c134 chore: remove Supabase dependency completely 2026-01-21 20:52:03 +07:00
maulanasdqn 3f30fbe89c fix: make Supabase client lazy to avoid errors when credentials missing 2026-01-21 20:41:28 +07:00
maulanasdqn 951db0f28a feat: add infra app for infrastructure documentation 2026-01-21 20:22:27 +07:00
maulanasdqn ad59d39f55 fix: add react-is dependency for recharts
This is a peer dependency required for recharts to work properly
in production builds.
2026-01-21 18:54:39 +07:00
maulanasdqn 1283689d84 fix(nix): use script command to create pseudo-terminal for Nx
This provides a pty that satisfies Nx's terminal requirements,
preventing the raw terminal mode crash in sandboxed builds.
2026-01-21 18:45:45 +07:00
maulanasdqn 7d1370d7f2 fix(nix): run nx build in background to handle SIGABRT
Background process signal handling allows wait to catch SIGABRT
and || true to suppress the non-zero exit status.
2026-01-21 18:39:05 +07:00
maulanasdqn ab0b56780f fix(nix): use set +e to handle SIGABRT from Nx crash
Signal handling in bash requires set +e to prevent errexit
from terminating the script when a process is killed by SIGABRT.
2026-01-21 18:33:03 +07:00
maulanasdqn 1a39ac37db fix(nix): improve Nx crash recovery for Vite builds
Use '|| true' to always continue past Nx terminal crash,
then verify build output directory exists separately.
2026-01-21 18:25:53 +07:00
maulanasdqnandClaude Opus 4.5 e5dc784301 fix(nix): handle Nx terminal crash for Vite apps
Add fallback check to continue if build output exists even when
Nx crashes after successful build completion.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:14:52 +07:00
maulanasdqnandClaude Opus 4.5 b2de22b0ef fix(nix): add --jitless flag to workaround V8 memory issue
Add --jitless Node.js flag to work around V8 JIT compilation
memory allocation issues on the server.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:16:51 +07:00
maulanasdqnandClaude Opus 4.5 ad20eda182 fix(nix): use proper bash path in wrapper script
Fix wrapper script to use explicit Nix bash path instead of
/usr/bin/env bash which doesn't work on NixOS.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:11:39 +07:00
maulanasdqnandClaude Opus 4.5 da65aa4109 chore(nix): update npmDepsHash for local fonts
Update hash after adding font files to the repository.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:02:14 +07:00
maulanasdqnandClaude Opus 4.5 1f0798752c feat(landing): use local fonts instead of Google Fonts
- Download Poppins and Bai Jamjuree font files locally
- Convert from next/font/google to next/font/local
- Enables builds in sandboxed environments without network access

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 16:55:26 +07:00
maulanasdqnandClaude Opus 4.5 5f28b9b406 fix(nix): allow network access for Google Fonts during build
Add __noChroot=true to enable network access for next/font/google
to fetch Poppins and Bai_Jamjuree fonts during the Next.js build.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 16:44:07 +07:00
maulanasdqnandClaude Opus 4.5 9e8fc7c07f fix(nix): use --output-style=static to bypass Nx terminal crash
Call Nx directly with --output-style=static flag instead of through
npm scripts to completely bypass the pseudo terminal initialization
that crashes in non-TTY environments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 16:34:39 +07:00
maulanasdqnandClaude Opus 4.5 ca51f8aca2 fix(nix): disable Nx native terminal to prevent build crash
Add NX_TASKS_RUNNER_DYNAMIC_OUTPUT=false and NX_NATIVE=false
to completely disable Nx's Rust-based terminal handling that
crashes in non-TTY build environments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 16:25:27 +07:00
maulanasdqnandClaude Opus 4.5 c086b1371c fix(nix): add CI environment flags to prevent terminal rendering crash
Added CI=true, NO_COLOR=1, TERM=dumb, and NX_SKIP_NX_CACHE=true
to both mkViteApp.nix and landing.nix to prevent the vt100-rust
panic during Nix builds.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 14:57:17 +07:00
maulanasdqn 398350795d fix: add legacy-peer-deps and makeCacheWritable for npm builds 2026-01-21 14:26:13 +07:00
maulanasdqnandClaude Opus 4.5 5be9ec1edf feat: add Nix flake for reproducible builds and deployment
- Add flake.nix with packages for all 5 apps (landing, gacha, backoffice, dimentorin, hackathon)
- Add NixOS modules for deployment (systemd service for Next.js, nginx for Vite apps)
- Add mkHackathonWithEnv function for build-time environment variables
- Add development shell with Node.js 22, npm, bun

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 10:02:46 +07:00
Hafid NurandGitHub f77967a092 feat(hackathon): update certificate to include project submission name (#74)
* update hackathon landing page

* feat(hackathon): draft winner certificate

* feat(hackathon): refine winner certificate

* feat(hackathon): update certificate

- add submission project name to the certificate
2025-12-16 13:58:43 +07:00
Hafid NurandGitHub fe172cc128 feat(hackathon): winner certificate (#73)
* update hackathon landing page

* feat(hackathon): draft winner certificate

* feat(hackathon): refine winner certificate
2025-12-16 12:33:23 +07:00
Hafid NurandGitHub 38ee9a9549 update hackathon landing page (#72) 2025-12-15 14:43:11 +07:00
Maulana SodiqinandClaude 3ad828e759 feat: update certificate design with SVG template and Poppins font
- Changed certificate background from PNG to SVG for better quality
- Added Poppins font import to index.html
- Updated certificate layout with Team Name and Person Name in blue (#59bef5)
- Repositioned QR code to fit in designated white box placeholder
- Removed generated copyright and date overlays (now part of SVG template)
- Adjusted text positioning for better alignment with new design
- Increased canvas scale to 4x and wait time to 1500ms for sharper rendering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-13 23:41:56 +07:00
Maulana SodiqinandClaude 782cce820b feat: hide certificate buttons for non-team members
- Added isTeamMember check (session user ID === certificate user ID)
- Hide all action buttons (Download, Print, View Submission) for non-members
- Hide "Back to Submission" button in header for non-members
- Unauthenticated users and other users can view certificate but cannot interact with buttons

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 00:48:21 +07:00
Maulana SodiqinandClaude f5882e3cdc feat: integrate new certificate endpoint from backend
- Updated certificate page to use useCertificatePublicData hook
- Removed old multi-API-call approach
- Now uses single /certificates/{userId} endpoint
- Simplified data fetching for user, team, submission data
- Certificate now works for unauthenticated users
- Removed duplicate certificate hook file

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 00:16:29 +07:00
Maulana SodiqinandClaude afaaff4a7f feat(service): add public certificate data hook
Add new useCertificatePublicData hook to fetch certificate data from public endpoint without authentication. This hook combines user, team, submission, and winner data in a single request.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-11 00:02:31 +07:00
Maulana SodiqinandClaude da8b08cd73 fix: allow unauthenticated users to view certificates
- Updated API error interceptor to skip redirect on certificate pages
- Prevents 401 errors from redirecting to login on public certificate pages
- Certificate pages can now be viewed without authentication

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 22:01:37 +07:00
Maulana SodiqinandClaude 1dbe704230 feat: implement persistent personalized certificates
- Modified encodeCertificateId to include userId parameter
- Updated decodeCertificateId to extract and return userId
- Added backward compatibility for old 2-part certificate IDs
- Certificate page now fetches and displays certificate owner's name
- Submission page passes current user's ID when generating certificate
- Fixed certificate template to use certificate owner's name instead of team leader
- Certificates now show the encoded user's name regardless of who views them

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 21:40:34 +07:00
Maulana SodiqinandClaude 59c1bb0366 feat: make certificate page publicly accessible
- Add /certificate/* to public routes in root layout
- Display team leader name instead of current user
- Remove authentication requirement for viewing certificates
- Certificates now work without login

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 21:30:28 +07:00
Maulana SodiqinandClaude c518784810 fix: encode certificate ID in QR code URL
- Use encodeURIComponent to properly encode certId
- Fixes QR code URLs with special characters like /, +, =
- QR codes now generate with properly encoded URLs (%2F, %2B, %3D)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 21:23:35 +07:00
Maulana SodiqinandGitHub 0267de664b Delete .github/workflows/deploy-landing.yml 2025-12-10 12:28:05 +07:00