Thank you for interest in contributing to the Ground Zero Community! This documentation outlines code standards, branch conventions, and design variables to help you set up and build alongside the community.
If you want to contribute features, cleanups, or styling additions, follow this flow:
Real-time discussion happens on our Discord Server. Head over to the #get-started channel to coordinate with the maintainers and other contributors.
Always branch from master (or the default integration branch) using these naming conventions:
feat/: New layout sections, widgets, or components (e.g.feat/member-profile)fix/: Bug repairs, visual layout corrections, or broken links (e.g.fix/particles-overlap)docs/: Updates to readmes, handbook pages, or code comments (e.g.docs/contributing-guidelines)refactor/: Code optimization and organization (e.g.refactor/tab-animations)
- Fork the repository under your personal GitHub account.
- Clone your fork locally and create a branch:
git checkout -b feat/your-awesome-feature
- Commit your changes with clear, descriptive commit messages.
- Run
npm run lintandnpm run buildto confirm compiling passes successfully with zero warnings/errors. - Push to your branch and open a Pull Request (PR) targeting the Ground Zero
masterbranch.
This project is styled with a premium developer dark-mode aesthetic. Style tokens are defined inside @theme variables in src/app/globals.css.
- Background:
#000000(Pure Black) - Surfaces/Cards:
#0A0A0A - Primary Accents:
#CCFF00(Neon Yellow-Green, bound to Tailwind--color-brand) - Borders:
rgba(255, 255, 255, 0.04)(Very thin line boundaries)
- Headings & Main Copies: Space Grotesk (
var(--font-space-grotesk)), yielding a geometric cyber style. - Console & Technical Data: Space Mono (
var(--font-space-mono)), used for commands, badge numbers, stats, and typewriter elements.
Keep easing transitions clean and modern:
- Avoid bounce animations on standard panels unless intentionally mimicking console notifications.
- Use
ease: "easeOut"for scaling/sliding panels. - For canvas rendering elements (e.g. floating code backdrops), use
requestAnimationFrameloops instead of setInterval to optimize rendering performance.
- Always use the
<Image />component fromnext/imagerather than standard HTML<img>tags for assets (like logos and banner graphics) to maintain optimized Largest Contentful Paint (LCP) speeds. - Set explicit
widthandheightproperties on<Image />to prevent layout reflow shifts.
- Avoid synchronous state transitions inside
useEffect: Calling state hooks (setState) synchronously inside the main body of an effect triggers cascading render warnings in React 19. - Wrap state overrides (e.g. resets in loops or timers) inside asynchronous handlers like
setTimeoutor window callbacks:// YES useEffect(() => { const timer = setTimeout(() => { setIsActive(false); }, 500); return () => clearTimeout(timer); }, []); // NO (causes cascading render warnings) useEffect(() => { if (needsReset) { setIsActive(false); } }, [needsReset]);
Before building custom elements, check the following files inside src/components/ui/ for reusable primitives:
- button.tsx — Styled primary (solid white) and secondary (outline border) buttons.
- card.tsx — Card blocks with automatic mouse shine gradient masks.
- badge.tsx — Muted badge tags.