From 228faf226add422196dbf7589f715e13b68cac3e Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 15 Jul 2024 20:08:18 +0400 Subject: [PATCH] . --- .gitignore | 46 +++++++++++++++++++++++++++++++++++++++++ bun.lockb | Bin 0 -> 151704 bytes eslint.config.js | 24 +++++++++++++++++++++ package.json | 22 ++++++++++++++++++++ readme.md | 33 +++++++++++++++++++++++++++++ tsconfig.json | 30 +++++++++++++++++++++++++++ web/.eslintrc.json | 3 +++ web/.gitignore | 36 ++++++++++++++++++++++++++++++++ web/app/favicon.ico | Bin 0 -> 25931 bytes web/app/globals.css | 28 +++++++++++++++++++++++++ web/app/layout.tsx | 22 ++++++++++++++++++++ web/app/page.tsx | 5 +++++ web/next.config.mjs | 4 ++++ web/package.json | 27 ++++++++++++++++++++++++ web/postcss.config.mjs | 8 +++++++ web/public/next.svg | 1 + web/public/vercel.svg | 1 + web/tailwind.config.ts | 19 +++++++++++++++++ web/tsconfig.json | 26 +++++++++++++++++++++++ 19 files changed, 335 insertions(+) create mode 100644 .gitignore create mode 100755 bun.lockb create mode 100644 eslint.config.js create mode 100644 package.json create mode 100644 readme.md create mode 100644 tsconfig.json create mode 100644 web/.eslintrc.json create mode 100644 web/.gitignore create mode 100644 web/app/favicon.ico create mode 100644 web/app/globals.css create mode 100644 web/app/layout.tsx create mode 100644 web/app/page.tsx create mode 100644 web/next.config.mjs create mode 100644 web/package.json create mode 100644 web/postcss.config.mjs create mode 100644 web/public/next.svg create mode 100644 web/public/vercel.svg create mode 100644 web/tailwind.config.ts create mode 100644 web/tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c4c909d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# 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 + +dbschema/edgeql-js +dbschema/interfaces.ts + +# other +package-lock.json +pnpm-lock.yaml +.env +cli/run.ts +.next-types +.env +.next diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..164158122f0a795b1d856bde4d862a90dd61aca6 GIT binary patch literal 151704 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 VS@puSkD`KJO|ZnB!T%%Z{{w&qj#B^t literal 0 HcmV?d00001 diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..22c9826a --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,24 @@ +import { FlatCompat } from "@eslint/eslintrc" +import js from "@eslint/js" + +const compat = new FlatCompat() + +export default [ + { + ...compat + .extends( + "eslint:recommended", + "plugin:@typescript-eslint/recommended-type-checked", + "plugin:@typescript-eslint/stylistic-type-checked", + "prettier" + ) + .map(c => ({ + ...c, + files: ["**/*.{ts,tsx,mts}"] + })) + }, + { + files: ["**/*.{js,jsx,cjs,mjs}"], + ...js.configs.recommended + } +] diff --git a/package.json b/package.json new file mode 100644 index 00000000..e379ccc6 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "learn-anything", + "scripts": { + "dev": "bun web", + "web": "cd web && bun dev", + "web:build": "bun run --filter '*' build" + }, + "devDependencies": { + "bun-types": "^1.1.18" + }, + "workspaces": [ + "web" + ], + "prettier": { + "useTabs": true, + "semi": false, + "trailingComma": "none", + "printWidth": 120, + "arrowParens": "avoid" + }, + "private": true +} diff --git a/readme.md b/readme.md new file mode 100644 index 00000000..04ee1085 --- /dev/null +++ b/readme.md @@ -0,0 +1,33 @@ +# [Learn-Anything.xyz](https://learn-anything.xyz) + +## Setup + +Using [Bun](https://bun.sh). + +``` +bun i +``` + +[Jazz](https://jazz.tools/) is used for all global/local state management. + +## Run website + +``` +bun web +``` + +## Contribute + +Currently things are unstable but will improve. + +If you want to help contribute to code, ask for help on [Discord](https://discord.gg/bxtD8x6aNF)'s `#dev` channel. You will be onboarded and unblocked fast. + +Can always submit draft PRs with good ideas/fixes. We will help along the way to make it merge ready. + +## Chat + +Community chat in [Discord server](https://discord.gg/bxtD8x6aNF). + +Internal dev chat in Telegram (can email `join@learn-anything.xyz` to join core team). We will reach out with offer to join if you contribute to repo in form of PRs too. + +[![X](https://img.shields.io/badge/learnanything-100000?logo=X&color=black)](https://x.com/learnanything_) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..1bb3943b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "rootDirs": [".", ".next-types"], + "target": "esnext", + "module": "esnext", + "moduleResolution": "bundler", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "baseUrl": ".", + "paths": { + "@/*": ["./*"] + }, + "types": ["bun-types"] + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "**/*.(mts|ts)"], + "exclude": ["node_modules"] +} diff --git a/web/.eslintrc.json b/web/.eslintrc.json new file mode 100644 index 00000000..72cc705c --- /dev/null +++ b/web/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/web/.gitignore b/web/.gitignore new file mode 100644 index 00000000..fd3dbb57 --- /dev/null +++ b/web/.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/web/app/favicon.ico b/web/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/web/app/globals.css b/web/app/globals.css new file mode 100644 index 00000000..56208c36 --- /dev/null +++ b/web/app/globals.css @@ -0,0 +1,28 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } +} + +body { + color: rgb(var(--foreground-rgb)); + background: linear-gradient(to bottom, transparent, rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb)); +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/web/app/layout.tsx b/web/app/layout.tsx new file mode 100644 index 00000000..d2910887 --- /dev/null +++ b/web/app/layout.tsx @@ -0,0 +1,22 @@ +import type { Metadata } from "next" +import { Inter } from "next/font/google" +import "./globals.css" + +const inter = Inter({ subsets: ["latin"] }) + +export const metadata: Metadata = { + title: "Learn Anything", + description: "Organize world's knowledge, explore connections and curate learning paths" +} + +export default function RootLayout({ + children +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + {children} + + ) +} diff --git a/web/app/page.tsx b/web/app/page.tsx new file mode 100644 index 00000000..d9621817 --- /dev/null +++ b/web/app/page.tsx @@ -0,0 +1,5 @@ +"use client" + +export default function Home() { + return
+} diff --git a/web/next.config.mjs b/web/next.config.mjs new file mode 100644 index 00000000..4678774e --- /dev/null +++ b/web/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/web/package.json b/web/package.json new file mode 100644 index 00000000..4ec875c3 --- /dev/null +++ b/web/package.json @@ -0,0 +1,27 @@ +{ + "name": "web", + "version": "0.1.0", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "react": "^18", + "react-dom": "^18", + "next": "14.2.5" + }, + "devDependencies": { + "typescript": "^5", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "eslint": "^8", + "eslint-config-next": "14.2.5", + "prettier-plugin-tailwindcss": "^0.6.5" + }, + "private": true +} diff --git a/web/postcss.config.mjs b/web/postcss.config.mjs new file mode 100644 index 00000000..1a69fd2a --- /dev/null +++ b/web/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/web/public/next.svg b/web/public/next.svg new file mode 100644 index 00000000..5174b28c --- /dev/null +++ b/web/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/public/vercel.svg b/web/public/vercel.svg new file mode 100644 index 00000000..d2f84222 --- /dev/null +++ b/web/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/tailwind.config.ts b/web/tailwind.config.ts new file mode 100644 index 00000000..d5f9834a --- /dev/null +++ b/web/tailwind.config.ts @@ -0,0 +1,19 @@ +import type { Config } from "tailwindcss" + +const config: Config = { + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}" + ], + theme: { + extend: { + backgroundImage: { + "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", + "gradient-conic": "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))" + } + } + }, + plugins: [] +} +export default config diff --git a/web/tsconfig.json b/web/tsconfig.json new file mode 100644 index 00000000..7a75d434 --- /dev/null +++ b/web/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": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}