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 00000000..718d6fea Binary files /dev/null and b/apps/partners/src/app/favicon.ico differ 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 +

+
+ + By{" "} + Vercel Logo + +
+
+ +
+ Next.js Logo +
+ +
+ +

+ Docs{" "} + + -> + +

+

+ Find in-depth information about Next.js features and API. +

+
+ + +

+ Learn{" "} + + -> + +

+

+ Learn about Next.js in an interactive course with quizzes! +

+
+ + +

+ Templates{" "} + + -> + +

+

+ Explore starter templates for Next.js. +

+
+ + +

+ Deploy{" "} + + -> + +

+

+ Instantly deploy your Next.js site to a shareable URL with Vercel. +

+
+
+
+ ); +} 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':