From cf841ad9158bd019176437c5e2a8fda22444bbfe Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 13:26:54 +0000 Subject: [PATCH 1/5] Initial plan From 58752d031b50750b652c23b84717e71e8dc328ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 13:37:59 +0000 Subject: [PATCH 2/5] Initialize Next.js site with TypeScript, Contentlayer2, and custom theme Co-authored-by: johnnyhuy <27847622+johnnyhuy@users.noreply.github.com> --- .github/workflows/deploy.yml | 51 + .gitignore | 44 + LICENSE | 21 - README.md | 72 +- app/about/page.tsx | 27 + app/favicon.ico | Bin 0 -> 25931 bytes app/globals.css | 24 + app/layout.tsx | 21 + app/oss/page.tsx | 27 + app/page.tsx | 202 + app/projects/page.tsx | 65 + app/services/page.tsx | 27 + components/Footer.tsx | 42 + components/Header.tsx | 31 + content/pages/about.mdx | 10 + content/pages/oss.mdx | 16 + content/pages/projects.mdx | 8 + content/pages/services.mdx | 13 + content/projects/example-1.mdx | 11 + content/projects/example-2.mdx | 11 + contentlayer.config.ts | 62 + eslint.config.mjs | 18 + next.config.ts | 14 + package-lock.json | 10249 +++++++++++++++++++++++++++++++ package.json | 29 + postcss.config.mjs | 7 + public/CNAME | 1 + public/file.svg | 1 + public/globe.svg | 1 + public/next.svg | 1 + public/vercel.svg | 1 + public/window.svg | 1 + tsconfig.json | 37 + 33 files changed, 11122 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/deploy.yml create mode 100644 .gitignore delete mode 100644 LICENSE create mode 100644 app/about/page.tsx create mode 100644 app/favicon.ico create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/oss/page.tsx create mode 100644 app/page.tsx create mode 100644 app/projects/page.tsx create mode 100644 app/services/page.tsx create mode 100644 components/Footer.tsx create mode 100644 components/Header.tsx create mode 100644 content/pages/about.mdx create mode 100644 content/pages/oss.mdx create mode 100644 content/pages/projects.mdx create mode 100644 content/pages/services.mdx create mode 100644 content/projects/example-1.mdx create mode 100644 content/projects/example-2.mdx create mode 100644 contentlayer.config.ts create mode 100644 eslint.config.mjs create mode 100644 next.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 public/CNAME create mode 100644 public/file.svg create mode 100644 public/globe.svg create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 public/window.svg create mode 100644 tsconfig.json diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..dbeeea6 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,51 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./out + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..227d831 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# contentlayer +.contentlayer diff --git a/LICENSE b/LICENSE deleted file mode 100644 index e2c4f8f..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2025 echoHello - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index cc3a8fa..cf67d8e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,70 @@ -# website -The website for echoHello +# echoHello.dev + +The official website for echoHello - built with Next.js, TypeScript, and Contentlayer2. + +## 🚀 Features + +- **Next.js 16** with App Router and TypeScript +- **Contentlayer2** for MDX content management +- **Tailwind CSS 4** for styling +- **Static Export** for GitHub Pages deployment +- **Base Path Aware** for proper routing on GitHub Pages +- **Custom Theme**: Warm orange (#FEA116), charcoal ink, rounded design + +## 🎨 Design + +The site features a bold, modern design with: +- Warm orange (#FEA116) as the primary accent color +- Charcoal (#2C2C2C) for text and backgrounds +- Thick rounded borders and big border radii +- Monoline style with subtle wave arcs +- Responsive layout optimized for all devices + +## 📦 Getting Started + +First, install dependencies: + +```bash +npm install +``` + +Then, run the development server: + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +## 🔨 Building + +To build the site for production: + +```bash +npm run build +``` + +This will generate a static export in the `out` directory. + +## 📝 Content Management + +Content is managed through Contentlayer2 with MDX files in the `content` directory: + +- `content/pages/` - Static pages (about, services, oss, projects) +- `content/projects/` - Project entries with metadata + +## 🚀 Deployment + +The site automatically deploys to GitHub Pages via GitHub Actions when changes are pushed to the main branch. + +The workflow file is located at `.github/workflows/deploy.yml`. + +## 🔗 Links + +- **Discord**: [Join our community](https://discord.gg/echohello) +- **GitHub**: [View our projects](https://github.com/echohello-dev) + +## 📄 License + +See LICENSE file for details. + diff --git a/app/about/page.tsx b/app/about/page.tsx new file mode 100644 index 0000000..676900d --- /dev/null +++ b/app/about/page.tsx @@ -0,0 +1,27 @@ +import { allPages } from "contentlayer/generated"; +import { notFound } from "next/navigation"; +import { useMDXComponent } from "next-contentlayer2/hooks"; +import Header from "@/components/Header"; +import Footer from "@/components/Footer"; + +export default function AboutPage() { + const page = allPages.find((p) => p.slug === "about"); + + if (!page) { + notFound(); + } + + const MDXContent = useMDXComponent(page.body.code); + + return ( + <> +
+
+
+ +
+
+