cuhacking / 2025

Flagship platform for cuHacking's 2025 hackathon.
4 stars 4 forks source link

[ADR] Consolidate Marketing site, Hacker Portal App, and Docs site into Monorepo #40

Closed MFarabi619 closed 1 month ago

MFarabi619 commented 1 month ago

Problem Statement The current setup for the Marketing site, Hacker Portal App, and Docs site is fragmented and inefficient. This makes maintenance more time-consuming, leads to inconsistent branding, makes duplicated effort more difficult to track, and can result in performance issues. Plus, the content isn't localized.

Our code is currently fragmented across separate repositories. Design elements, utilities, and configurations are strewn around the GitHub organization. Developers currently need to context switch between different repositories. This hurts their experience and overall productivity.

Residual unversioned files can also increase the risk of deep, catastrophic bugs may not be caught by tests and hurt the project.

Goals

  1. Establish a unified design system for a consistent brand identity.
  2. Improve development efficiency and reduce maintenance by consolidating into a monorepo.
  3. Enable server-side rendering for the marketing site to boost performance.
  4. Implement a CMS for easier content updates without changing code.
  5. Localize content to support multiple languages.
  6. Implement unit, integration, and end-to-end tests for code quality.
  7. Use a monorepo management tool to streamline configurations and support micro-frontend architecture.

Out of Scope

Solution Summary

History/Context Currently, the marketing site uses vanilla React and Vite, the hacker portal app is a full-stack application with lots of client-side interactions, and the docs site runs on Fumadocs with Next.js. The marketing site is static and client-side rendered, with hard-coded content. This setup makes it tough to maintain consistent branding, update content, and manage shared configurations.

Solution Consolidate all three web assets into a monorepo managed by Nx. Here's the plan:

Changes in terminology:

Get all past websites of cuHacking up and and have a toggle/dropdown in our navbar that links to all past iterations, as lots of people before us worked hard on them. Send all the cuhacking alumni an email that we got them up as a homage of respect and they can re-visit them. This kickstarts a strong alumni network.

Other options considered

MFarabi619 commented 1 month ago

Starter config: image