From 9414c9bfdc52adf3b844f9437344de4959b2005d Mon Sep 17 00:00:00 2001 From: Josh Daniel Date: Fri, 16 Aug 2024 22:52:12 +0800 Subject: [PATCH 1/4] feat: setup project for Umamin Partners --- apps/partners/.eslintrc.json | 3 + apps/partners/.gitignore | 36 +++++++++ apps/partners/README.md | 36 +++++++++ apps/partners/next.config.mjs | 17 ++++ apps/partners/package.json | 57 +++++++++++++ apps/partners/postcss.config.cjs | 1 + apps/partners/public/next.svg | 1 + apps/partners/public/vercel.svg | 1 + apps/partners/src/app/favicon.ico | Bin 0 -> 25931 bytes apps/partners/src/app/layout.tsx | 65 +++++++++++++++ apps/partners/src/app/page.tsx | 113 ++++++++++++++++++++++++++ apps/partners/tailwind.config.ts | 1 + apps/partners/tsconfig.json | 26 ++++++ package.json | 9 ++- pnpm-lock.yaml | 130 ++++++++++++++++++++++++++++++ 15 files changed, 492 insertions(+), 4 deletions(-) create mode 100644 apps/partners/.eslintrc.json create mode 100644 apps/partners/.gitignore create mode 100644 apps/partners/README.md create mode 100644 apps/partners/next.config.mjs create mode 100644 apps/partners/package.json create mode 100644 apps/partners/postcss.config.cjs create mode 100644 apps/partners/public/next.svg create mode 100644 apps/partners/public/vercel.svg create mode 100644 apps/partners/src/app/favicon.ico create mode 100644 apps/partners/src/app/layout.tsx create mode 100644 apps/partners/src/app/page.tsx create mode 100644 apps/partners/tailwind.config.ts create mode 100644 apps/partners/tsconfig.json diff --git a/apps/partners/.eslintrc.json b/apps/partners/.eslintrc.json new file mode 100644 index 00000000..bffb357a --- /dev/null +++ b/apps/partners/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/apps/partners/.gitignore b/apps/partners/.gitignore new file mode 100644 index 00000000..fd3dbb57 --- /dev/null +++ b/apps/partners/.gitignore @@ -0,0 +1,36 @@ +# 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 diff --git a/apps/partners/README.md b/apps/partners/README.md new file mode 100644 index 00000000..c4033664 --- /dev/null +++ b/apps/partners/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/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/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## 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/deployment) for more details. diff --git a/apps/partners/next.config.mjs b/apps/partners/next.config.mjs new file mode 100644 index 00000000..f46c0848 --- /dev/null +++ b/apps/partners/next.config.mjs @@ -0,0 +1,17 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + transpilePackages: ["@umamin/ui", "@umamin/db", "@umamin/gql"], + compiler: { + removeConsole: process.env.NODE_ENV === "production", + }, + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "lh3.googleusercontent.com", + }, + ], + }, +}; + +export default nextConfig; diff --git a/apps/partners/package.json b/apps/partners/package.json new file mode 100644 index 00000000..56036055 --- /dev/null +++ b/apps/partners/package.json @@ -0,0 +1,57 @@ +{ + "name": "partners", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@graphql-yoga/plugin-csrf-prevention": "^3.6.2", + "@graphql-yoga/plugin-disable-introspection": "^2.6.2", + "@graphql-yoga/plugin-persisted-operations": "^3.6.2", + "@graphql-yoga/plugin-response-cache": "^3.8.2", + "@lucia-auth/adapter-drizzle": "^1.0.7", + "@urql/core": "^5.0.5", + "@urql/exchange-graphcache": "^7.1.1", + "@urql/exchange-persisted": "^4.3.0", + "@urql/next": "^1.1.1", + "date-fns": "^3.6.0", + "geist": "^1.3.1", + "arctic": "^1.9.2", + "gql.tada": "^1.8.5", + "graphql": "^16.9.0", + "graphql-yoga": "^5.6.2", + "lucia": "^3.2.0", + "lucide-react": "^0.407.0", + "modern-screenshot": "^4.4.39", + "react-intersection-observer": "^9.10.2", + "urql": "^4.1.0", + "zod": "^3.22.4", + "sonner": "^1.5.0", + "nanoid": "^5.0.7", + "@whatwg-node/server": "^0.9.46", + "@umamin/db": "workspace:*", + "@umamin/gql": "workspace:*", + "@umamin/ui": "workspace:*", + "react": "^18", + "react-dom": "^18", + "next": "14.2.5" + }, + "devDependencies": { + "@0no-co/graphqlsp": "^1.12.12", + "@umamin/eslint-config": "workspace:*", + "@umamin/tsconfig": "workspace:*", + "typescript": "^5", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "autoprefixer": "^10.0.1", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "eslint": "^8", + "eslint-config-next": "14.2.5" + } +} diff --git a/apps/partners/postcss.config.cjs b/apps/partners/postcss.config.cjs new file mode 100644 index 00000000..a4917b21 --- /dev/null +++ b/apps/partners/postcss.config.cjs @@ -0,0 +1 @@ +module.exports = require("@umamin/ui/postcss.config"); diff --git a/apps/partners/public/next.svg b/apps/partners/public/next.svg new file mode 100644 index 00000000..5174b28c --- /dev/null +++ b/apps/partners/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/partners/public/vercel.svg b/apps/partners/public/vercel.svg new file mode 100644 index 00000000..d2f84222 --- /dev/null +++ b/apps/partners/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/partners/src/app/favicon.ico b/apps/partners/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/apps/partners/src/app/layout.tsx b/apps/partners/src/app/layout.tsx new file mode 100644 index 00000000..1652f1d9 --- /dev/null +++ b/apps/partners/src/app/layout.tsx @@ -0,0 +1,65 @@ +import type { Metadata, Viewport } from "next"; +import { GeistSans } from "geist/font/sans"; +import "@umamin/ui/globals.css"; + +export const viewport: Viewport = { + width: "device-width", + initialScale: 1, + themeColor: "black", +}; + +export const metadata: Metadata = { + metadataBase: new URL("https://partners.umamin.link"), + alternates: { + canonical: "/", + }, + title: "Umamin Partners — Anonymity at Scale", + authors: [{ name: "Omsimos Collective" }], + description: + "Umamin Partners provides powerful tools that are Ideal for businesses, organizations, or individuals dealing with large volumes of anonymous feedback, surveys, or communications. It combines the security and privacy of the core platform with powerful management tools to optimize workflow.", + keywords: [ + "anonymous messaging", + "open-source platform", + "encrypted messages", + "privacy", + "anonymity", + ], + openGraph: { + type: "website", + siteName: "Umamin Partners", + url: "https://social.umamin.link", + title: "Umamin Partners — Anonymity at Scale", + description: + "Umamin Partners provides powerful tools that are Ideal for businesses, organizations, or individuals dealing with large volumes of anonymous feedback, surveys, or communications. It combines the security and privacy of the core platform with powerful management tools to optimize workflow.", + }, + twitter: { + card: "summary_large_image", + title: "Umamin Partners — Anonymity at Scale", + description: + "Umamin Partners provides powerful tools that are Ideal for businesses, organizations, or individuals dealing with large volumes of anonymous feedback, surveys, or communications. It combines the security and privacy of the core platform with powerful management tools to optimize workflow.", + }, + robots: { + index: true, + follow: true, + googleBot: { + index: true, + follow: true, + noimageindex: false, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, + }, +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + ); +} diff --git a/apps/partners/src/app/page.tsx b/apps/partners/src/app/page.tsx new file mode 100644 index 00000000..2acfd440 --- /dev/null +++ b/apps/partners/src/app/page.tsx @@ -0,0 +1,113 @@ +import Image from "next/image"; + +export default function Home() { + return ( +
+
+

+ Get started by editing  + src/app/page.tsx +

+ +
+ +
+ Next.js Logo +
+ + +
+ ); +} diff --git a/apps/partners/tailwind.config.ts b/apps/partners/tailwind.config.ts new file mode 100644 index 00000000..544d0407 --- /dev/null +++ b/apps/partners/tailwind.config.ts @@ -0,0 +1 @@ +export * from "@umamin/ui/tailwind.config"; diff --git a/apps/partners/tsconfig.json b/apps/partners/tsconfig.json new file mode 100644 index 00000000..7b285893 --- /dev/null +++ b/apps/partners/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/package.json b/package.json index cb9a043d..26add3ba 100644 --- a/package.json +++ b/package.json @@ -2,13 +2,14 @@ "name": "umamin", "private": true, "scripts": { - "build": "turbo run build --filter=!./apps/social --filter=!./packages/e2e", + "build": "turbo run build", "dev": "turbo run dev", "test": "turbo run test", - "start": "turbo run start --filter=!./apps/social", + "start": "turbo run start", "dev:test": "pnpm --filter @umamin/e2e dev:test", - "dev:www": "turbo run dev --filter=!./apps/social", - "dev:social": "turbo run dev --filter=!./apps/www", + "dev:www": "turbo run dev --filter=www --filter=@umamin/db", + "dev:social": "turbo run dev --filter=social --filter=@umamin/db", + "dev:partners": "turbo run dev --filter=partners --filter=@umamin/db", "build:www": "turbo run build --filter=!./apps/social", "build:social": "turbo run build --filter=!./apps/www", "gql:check": "pnpm --filter www gql:check", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bf41306d..bff61934 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,6 +24,136 @@ importers: specifier: ^5.5.4 version: 5.5.4 + apps/partners: + dependencies: + '@graphql-yoga/plugin-csrf-prevention': + specifier: ^3.6.2 + version: 3.6.2(graphql-yoga@5.6.2(graphql@16.9.0)) + '@graphql-yoga/plugin-disable-introspection': + specifier: ^2.6.2 + version: 2.6.2(graphql-yoga@5.6.2(graphql@16.9.0))(graphql@16.9.0) + '@graphql-yoga/plugin-persisted-operations': + specifier: ^3.6.2 + version: 3.6.2(@graphql-tools/utils@10.3.2(graphql@16.9.0))(graphql-yoga@5.6.2(graphql@16.9.0))(graphql@16.9.0) + '@graphql-yoga/plugin-response-cache': + specifier: ^3.8.2 + version: 3.8.2(@envelop/core@5.0.1)(graphql-yoga@5.6.2(graphql@16.9.0))(graphql@16.9.0) + '@lucia-auth/adapter-drizzle': + specifier: ^1.0.7 + version: 1.0.7(lucia@3.2.0) + '@umamin/db': + specifier: workspace:* + version: link:../../packages/db + '@umamin/gql': + specifier: workspace:* + version: link:../../packages/gql + '@umamin/ui': + specifier: workspace:* + version: link:../../packages/ui + '@urql/core': + specifier: ^5.0.5 + version: 5.0.5(graphql@16.9.0) + '@urql/exchange-graphcache': + specifier: ^7.1.1 + version: 7.1.2(@urql/core@5.0.5(graphql@16.9.0))(graphql@16.9.0) + '@urql/exchange-persisted': + specifier: ^4.3.0 + version: 4.3.0(@urql/core@5.0.5(graphql@16.9.0)) + '@urql/next': + specifier: ^1.1.1 + version: 1.1.1(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(urql@4.1.0(@urql/core@5.0.5(graphql@16.9.0))(react@18.3.1)) + '@whatwg-node/server': + specifier: ^0.9.46 + version: 0.9.46 + arctic: + specifier: ^1.9.2 + version: 1.9.2 + date-fns: + specifier: ^3.6.0 + version: 3.6.0 + geist: + specifier: ^1.3.1 + version: 1.3.1(next@14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + gql.tada: + specifier: ^1.8.5 + version: 1.8.5(graphql@16.9.0)(typescript@5.5.4) + graphql: + specifier: ^16.9.0 + version: 16.9.0 + graphql-yoga: + specifier: ^5.6.2 + version: 5.6.2(graphql@16.9.0) + lucia: + specifier: ^3.2.0 + version: 3.2.0 + lucide-react: + specifier: ^0.407.0 + version: 0.407.0(react@18.3.1) + modern-screenshot: + specifier: ^4.4.39 + version: 4.4.39 + nanoid: + specifier: ^5.0.7 + version: 5.0.7 + next: + specifier: 14.2.5 + version: 14.2.5(@opentelemetry/api@1.9.0)(@playwright/test@1.45.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: + specifier: ^18 + version: 18.3.1 + react-dom: + specifier: ^18 + version: 18.3.1(react@18.3.1) + react-intersection-observer: + specifier: ^9.10.2 + version: 9.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + sonner: + specifier: ^1.5.0 + version: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + urql: + specifier: ^4.1.0 + version: 4.1.0(@urql/core@5.0.5(graphql@16.9.0))(react@18.3.1) + zod: + specifier: ^3.22.4 + version: 3.23.8 + devDependencies: + '@0no-co/graphqlsp': + specifier: ^1.12.12 + version: 1.12.12(graphql@16.9.0)(typescript@5.5.4) + '@types/node': + specifier: ^20 + version: 20.14.13 + '@types/react': + specifier: ^18 + version: 18.3.3 + '@types/react-dom': + specifier: ^18 + version: 18.3.0 + '@umamin/eslint-config': + specifier: workspace:* + version: link:../../packages/eslint + '@umamin/tsconfig': + specifier: workspace:* + version: link:../../packages/tsconfig + autoprefixer: + specifier: ^10.0.1 + version: 10.4.19(postcss@8.4.40) + eslint: + specifier: ^8 + version: 8.57.0 + eslint-config-next: + specifier: 14.2.5 + version: 14.2.5(eslint@8.57.0)(typescript@5.5.4) + postcss: + specifier: ^8 + version: 8.4.40 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.7 + typescript: + specifier: ^5 + version: 5.5.4 + apps/social: dependencies: '@graphql-yoga/plugin-apq': From f0c587fa9b6a86cdbdec8663f2c26fcaa3ee2709 Mon Sep 17 00:00:00 2001 From: Josh Daniel Date: Fri, 16 Aug 2024 23:52:07 +0800 Subject: [PATCH 2/4] feat: add hero section --- apps/partners/package.json | 1 + apps/partners/src/app/layout.tsx | 43 +++++++++- apps/partners/src/app/page.tsx | 137 +++++++++---------------------- pnpm-lock.yaml | 3 + 4 files changed, 82 insertions(+), 102 deletions(-) diff --git a/apps/partners/package.json b/apps/partners/package.json index 56036055..44a5d8fe 100644 --- a/apps/partners/package.json +++ b/apps/partners/package.json @@ -32,6 +32,7 @@ "zod": "^3.22.4", "sonner": "^1.5.0", "nanoid": "^5.0.7", + "nextjs-toploader": "^1.6.12", "@whatwg-node/server": "^0.9.46", "@umamin/db": "workspace:*", "@umamin/gql": "workspace:*", diff --git a/apps/partners/src/app/layout.tsx b/apps/partners/src/app/layout.tsx index 1652f1d9..b8ec7ac0 100644 --- a/apps/partners/src/app/layout.tsx +++ b/apps/partners/src/app/layout.tsx @@ -1,5 +1,9 @@ -import type { Metadata, Viewport } from "next"; +import { Toaster } from "sonner"; +import Script from "next/script"; import { GeistSans } from "geist/font/sans"; +import NextTopLoader from "nextjs-toploader"; +import type { Metadata, Viewport } from "next"; +import { ThemeProvider } from "@umamin/ui/components/theme-provider"; import "@umamin/ui/globals.css"; export const viewport: Viewport = { @@ -59,7 +63,42 @@ export default function RootLayout({ }>) { return ( - {children} + + + + + {children} + + + + {process.env.NODE_ENV === "production" && ( +