Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions apps/landing/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# local env files
.env*.local

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts

# devup-ui
/df
85 changes: 85 additions & 0 deletions apps/landing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Devup API Landing Page

This is the landing page for Devup API, built with **Next.js** and **Devup UI**.

## Tech Stack

- **Next.js 15+** - React framework with App Router
- **Devup UI** - Zero-runtime CSS-in-JS styling library
- **TypeScript** - Type safety
- **React 19** - Latest React features

## Getting Started

### Install Dependencies

```bash
npm install
# or
pnpm install
# or
yarn install
```

### Run Development Server

```bash
npm run dev
```

Open [http://localhost:3000](http://localhost:3000) to see the landing page.

### Build for Production

```bash
npm run build
```

This will generate a static export in the `out/` directory.

### Preview Production Build

```bash
npm run start
```

## Project Structure

```
landing/
├── public/ # Static assets
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── Hero.tsx
│ │ ├── Features.tsx
│ │ ├── CodeExamples.tsx
│ │ ├── Packages.tsx
│ │ └── Footer.tsx
│ └── components/ # Reusable components
├── devup.json # Devup UI theme configuration
├── next.config.ts # Next.js configuration
├── tsconfig.json # TypeScript configuration
└── package.json
```

## Customization

### Theme

Edit `devup.json` to customize colors, typography, spacing, and breakpoints.

### Content

- **Hero Section**: `src/app/Hero.tsx`
- **Features**: `src/app/Features.tsx`
- **Code Examples**: `src/app/CodeExamples.tsx`
- **Packages**: `src/app/Packages.tsx`
- **Footer**: `src/app/Footer.tsx`

## Learn More

- [Next.js Documentation](https://nextjs.org/docs)
- [Devup UI Documentation](https://github.com/dev-five-git/devup-ui)
- [Devup API Documentation](https://github.com/dev-five-git/devup-api)
140 changes: 140 additions & 0 deletions apps/landing/devup.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
{
"theme": {
"colors": {
"light": {
"primary": "#5A44FF",
"primaryHover": "#4836D9",
"secondary": "#85A5F2",
"accent": "#006BFF",
"text": "#212121",
"textLight": "#7F7F7F",
"textMuted": "#9ca3af",
"title": "#212121",
"bg": "#ffffff",
"bgSecondary": "#F7F7F8",
"bgTertiary": "#f3f4f6",
"border": "#E4E4E4",
"containerBackground": "#FBFBFB",
"success": "#10b981",
"warning": "#f59e0b",
"error": "#ef4444",
"codeBg": "#1E1E1E",
"codeText": "#e5e7eb",
"link": "#006BFF"
},
"dark": {
"primary": "#9086FF",
"primaryHover": "#7A70E6",
"secondary": "#2A4586",
"accent": "#60a5fa",
"text": "#f3f4f6",
"textLight": "#d1d5db",
"textMuted": "#9ca3af",
"title": "#ffffff",
"bg": "#121212",
"bgSecondary": "#1E1E1E",
"bgTertiary": "#2A2A2A",
"border": "#333333",
"containerBackground": "#1A1A1A",
"success": "#34d399",
"warning": "#fbbf24",
"error": "#f87171",
"codeBg": "#0f172a",
"codeText": "#e2e8f0",
"link": "#60a5fa"
}
},
"typography": {
"h1": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "32px",
"fontWeight": 800,
"lineHeight": 1.2,
"letterSpacing": "-0.03em"
},
"h2": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "24px",
"fontWeight": 700,
"lineHeight": 1.3,
"letterSpacing": "-0.03em"
},
"h3": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "18px",
"fontWeight": 700,
"lineHeight": 1.4,
"letterSpacing": "-0.03em"
},
"h4": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "20px",
"fontWeight": 700,
"lineHeight": 1.4,
"letterSpacing": "-0.03em"
},
"h5": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "16px",
"fontWeight": 600,
"lineHeight": 1.4,
"letterSpacing": "-0.03em"
},
"h6": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "14px",
"fontWeight": 600,
"lineHeight": 1.5,
"letterSpacing": "-0.03em"
},
"body": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "14px",
"fontWeight": 400,
"lineHeight": 1.6,
"letterSpacing": "-0.03em"
},
"bodyLarge": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "16px",
"fontWeight": 400,
"lineHeight": 1.6,
"letterSpacing": "-0.03em"
},
"textL": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "16px",
"fontWeight": 400,
"lineHeight": 1.6,
"letterSpacing": "-0.03em"
},
"button": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "16px",
"fontWeight": 600,
"lineHeight": 1,
"letterSpacing": "-0.03em"
},
"buttonM": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "14px",
"fontWeight": 600,
"lineHeight": 1,
"letterSpacing": "-0.03em"
},
"code": {
"fontFamily": "D2Coding, Monaco, 'Courier New', monospace",
"fontSize": "14px",
"lineHeight": 1.6,
"letterSpacing": "0"
},
"caption": {
"fontFamily": "Pretendard Variable, -apple-system, BlinkMacSystemFont, system-ui, sans-serif",
"fontSize": "12px",
"fontWeight": 400,
"lineHeight": 1.5,
"letterSpacing": "-0.03em"
}
}
}
}
10 changes: 10 additions & 0 deletions apps/landing/next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { DevupUI } from '@devup-ui/next-plugin'
import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
pageExtensions: ['js', 'jsx', 'ts', 'tsx'],
output: 'export',
reactCompiler: true,
}

export default DevupUI({}, nextConfig)
29 changes: 29 additions & 0 deletions apps/landing/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "devup-api-landing",
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@devup-ui/react": "latest",
"@devup-ui/reset-css": "latest",
"clsx": "^2.1.1",
"next": "^16.1.1",
"react": "^19.2.3",
"react-dom": "^19.2.3"
},
"devDependencies": {
"@devup-ui/next-plugin": "latest",
"@types/node": "^25",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "^16.1.1",
"typescript": "^5"
}
}
Loading