diff --git a/.gitmodules b/.gitmodules index 01a89f1..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "apps/web"] - path = apps/web - url = https://github.com/HoshinoSuzumi/helios.git diff --git a/apps/web b/apps/web deleted file mode 160000 index b2a4972..0000000 --- a/apps/web +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b2a4972cc14d88ae57753ab293662f6e556ec273 diff --git a/apps/web/.gitignore b/apps/web/.gitignore new file mode 100644 index 0000000..5ef6a52 --- /dev/null +++ b/apps/web/.gitignore @@ -0,0 +1,41 @@ +# 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 diff --git a/apps/web/README.md b/apps/web/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/apps/web/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/apps/web/app/favicon.ico b/apps/web/app/favicon.ico new file mode 100644 index 0000000..718d6fe Binary files /dev/null and b/apps/web/app/favicon.ico differ diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css new file mode 100644 index 0000000..7cca004 --- /dev/null +++ b/apps/web/app/globals.css @@ -0,0 +1,91 @@ +@import "tailwindcss"; +@import "@heroui/styles"; + +/* + * HeroUI Theme Customization + * Add this to your global.css after importing @heroui/styles + * Only includes base variables from variables.css + * @see https://v3.heroui.com/docs/react/getting-started/theming + */ + +:root, +.light, +.default, +[data-theme="light"], +[data-theme="default"] { + /* Theme Colors (Light Mode) */ + --accent: oklch(62.04% 0.1951 253.83); + --accent-foreground: oklch(99.11% 0 0); + --background: oklch(97.02% 0.0069 253.83); + --border: oklch(90.00% 0.0069 253.83); + --danger: oklch(65.32% 0.2360 25.74); + --danger-foreground: oklch(99.11% 0 0); + --default: oklch(94.00% 0.0069 253.83); + --default-foreground: oklch(21.03% 0.0059 253.83); + --field-background: oklch(100.00% 0.0034 253.83); + --field-foreground: oklch(21.03% 0.0069 253.83); + --field-placeholder: oklch(55.17% 0.0138 253.83); + --focus: oklch(62.04% 0.1951 253.83); + --foreground: oklch(21.03% 0.0069 253.83); + --muted: oklch(55.17% 0.0138 253.83); + --overlay: oklch(100.00% 0.0021 253.83); + --overlay-foreground: oklch(21.03% 0.0069 253.83); + --scrollbar: oklch(87.10% 0.0069 253.83); + --segment: oklch(100.00% 0.0069 253.83); + --segment-foreground: oklch(21.03% 0.0069 253.83); + --separator: oklch(92.00% 0.0069 253.83); + --success: oklch(73.29% 0.1962 150.81); + --success-foreground: oklch(21.03% 0.0059 150.81); + --surface: oklch(100.00% 0.0034 253.83); + --surface-foreground: oklch(21.03% 0.0069 253.83); + --surface-secondary: oklch(95.24% 0.0055 253.83); + --surface-secondary-foreground: oklch(21.03% 0.0069 253.83); + --surface-tertiary: oklch(93.73% 0.0055 253.83); + --surface-tertiary-foreground: oklch(21.03% 0.0069 253.83); + --warning: oklch(78.19% 0.1607 72.33); + --warning-foreground: oklch(21.03% 0.0059 72.33); + + /* Border Radius */ + --radius: 0.25rem; + --field-radius: 0.5rem; + + /* Font Family */ + /* Make sure to load Saira font in your app */ + --font-sans: "Saira", sans-serif; +} + +.dark, +[data-theme="dark"] { + color-scheme: dark; + /* Theme Colors (Dark Mode) */ + --accent: oklch(62.04% 0.1951 253.83); + --accent-foreground: oklch(99.11% 0 0); + --background: oklch(12.00% 0.0069 253.83); + --border: oklch(28.00% 0.0069 253.83); + --danger: oklch(59.40% 0.1994 24.63); + --danger-foreground: oklch(99.11% 0 0); + --default: oklch(27.40% 0.0069 253.83); + --default-foreground: oklch(99.11% 0 0); + --field-background: oklch(21.03% 0.0138 253.83); + --field-foreground: oklch(99.11% 0.0069 253.83); + --field-placeholder: oklch(70.50% 0.0138 253.83); + --focus: oklch(62.04% 0.1951 253.83); + --foreground: oklch(99.11% 0.0069 253.83); + --muted: oklch(70.50% 0.0138 253.83); + --overlay: oklch(21.03% 0.0138 253.83); + --overlay-foreground: oklch(99.11% 0.0069 253.83); + --scrollbar: oklch(70.50% 0.0069 253.83); + --segment: oklch(39.64% 0.0069 253.83); + --segment-foreground: oklch(99.11% 0.0069 253.83); + --separator: oklch(25.00% 0.0069 253.83); + --success: oklch(73.29% 0.1962 150.81); + --success-foreground: oklch(21.03% 0.0059 150.81); + --surface: oklch(21.03% 0.0138 253.83); + --surface-foreground: oklch(99.11% 0.0069 253.83); + --surface-secondary: oklch(25.70% 0.0103 253.83); + --surface-secondary-foreground: oklch(99.11% 0.0069 253.83); + --surface-tertiary: oklch(27.21% 0.0103 253.83); + --surface-tertiary-foreground: oklch(99.11% 0.0069 253.83); + --warning: oklch(82.03% 0.1407 76.34); + --warning-foreground: oklch(21.03% 0.0059 76.34); +} diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx new file mode 100644 index 0000000..267edba --- /dev/null +++ b/apps/web/app/layout.tsx @@ -0,0 +1,39 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono, Noto_Sans, Saira } from "next/font/google"; +import "./globals.css"; + +const fontSaira = Saira({ + variable: "--font-saira", + subsets: ["latin"], +}) + +const fontNotoSans = Noto_Sans({ + variable: "--font-noto-sans", + subsets: ["latin"], +}) + +const fontMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Helios EVCS", + description: "A modern EV charging station management system built with Next.js, Drizzle ORM, and OCPP.", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx new file mode 100644 index 0000000..26f3fee --- /dev/null +++ b/apps/web/app/page.tsx @@ -0,0 +1,67 @@ +import { Button } from "@heroui/react"; +import Image from "next/image"; + +export default function Home() { + return ( +
+
+ Next.js logo +
+

+ To get started, edit the page.tsx file. +

+

+ Looking for a starting point or more instructions? Head over to{" "} + + Templates + {" "} + or the{" "} + + Learning + {" "} + center. +

+
+
+ + Vercel logomark + Deploy Now + + + Documentation + + +
+
+
+ ); +} diff --git a/apps/web/next.config.ts b/apps/web/next.config.ts new file mode 100644 index 0000000..e9ffa30 --- /dev/null +++ b/apps/web/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/apps/web/package.json b/apps/web/package.json new file mode 100644 index 0000000..e9447f2 --- /dev/null +++ b/apps/web/package.json @@ -0,0 +1,25 @@ +{ + "name": "helios-web", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "@heroui/react": "3.0.0-beta.8", + "@heroui/styles": "3.0.0-beta.8", + "next": "16.1.6", + "react": "19.2.3", + "react-dom": "19.2.3" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "tailwindcss": "^4", + "typescript": "^5" + } +} \ No newline at end of file diff --git a/apps/web/pnpm-workspace.yaml b/apps/web/pnpm-workspace.yaml new file mode 100644 index 0000000..581a9d5 --- /dev/null +++ b/apps/web/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +ignoredBuiltDependencies: + - sharp + - unrs-resolver diff --git a/apps/web/postcss.config.mjs b/apps/web/postcss.config.mjs new file mode 100644 index 0000000..61e3684 --- /dev/null +++ b/apps/web/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; + +export default config; diff --git a/apps/web/public/file.svg b/apps/web/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/apps/web/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/public/globe.svg b/apps/web/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/apps/web/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/public/next.svg b/apps/web/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/apps/web/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/public/vercel.svg b/apps/web/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/apps/web/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/public/window.svg b/apps/web/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/apps/web/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json new file mode 100644 index 0000000..3a13f90 --- /dev/null +++ b/apps/web/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], + "exclude": ["node_modules"] +}