From 7ea91e22583febdce93e08a4cf28737ea943595e Mon Sep 17 00:00:00 2001 From: cloudwithax Date: Mon, 10 Feb 2025 13:10:20 -0500 Subject: [PATCH] init commit --- .bolt/config.json | 3 + .bolt/prompt | 8 ++ .gitignore | 24 ++++ bun.lockb | Bin 0 -> 120231 bytes eslint.config.js | 28 +++++ index.html | 16 +++ package.json | 33 ++++++ postcss.config.js | 6 + src/App.tsx | 247 +++++++++++++++++++++++++++++++++++++++++ src/assets/favicon.ico | Bin 0 -> 15406 bytes src/index.css | 3 + src/main.tsx | 10 ++ src/vite-env.d.ts | 1 + tailwind.config.js | 8 ++ tsconfig.app.json | 24 ++++ tsconfig.json | 7 ++ tsconfig.node.json | 22 ++++ vite.config.ts | 10 ++ 18 files changed, 450 insertions(+) create mode 100644 .bolt/config.json create mode 100644 .bolt/prompt create mode 100644 .gitignore create mode 100644 bun.lockb create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 src/App.tsx create mode 100644 src/assets/favicon.ico create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/vite-env.d.ts create mode 100644 tailwind.config.js create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.bolt/config.json b/.bolt/config.json new file mode 100644 index 0000000..6b6787d --- /dev/null +++ b/.bolt/config.json @@ -0,0 +1,3 @@ +{ + "template": "bolt-vite-react-ts" +} diff --git a/.bolt/prompt b/.bolt/prompt new file mode 100644 index 0000000..d0c0a8f --- /dev/null +++ b/.bolt/prompt @@ -0,0 +1,8 @@ +For all designs I ask you to make, have them be beautiful, not cookie cutter. Make webpages that are fully featured and worthy for production. + +By default, this template supports JSX syntax with Tailwind CSS classes, React hooks, and Lucide React for icons. Do not install other packages for UI themes, icons, etc unless absolutely necessary or I request them. + +Use icons from lucide-react for logos. + +Use stock photos from unsplash where appropriate, only valid URLs you know exist. Do not download the images, only link to them in image tags. + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..14834bead4d39b51222044f679dcdc6a14eee7ec GIT binary patch literal 120231 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 *phl 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 literal 0 HcmV?d00001 diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..82c2e20 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import reactHooks from 'eslint-plugin-react-hooks'; +import reactRefresh from 'eslint-plugin-react-refresh'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + } +); diff --git a/index.html b/index.html new file mode 100644 index 0000000..63e7f53 --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + + + + How much does Google owe Russia? + + + +
+ + + + \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..feb68fd --- /dev/null +++ b/package.json @@ -0,0 +1,33 @@ +{ + "name": "vite-react-typescript-starter", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "lucide-react": "^0.344.0", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/js": "^9.9.1", + "@types/react": "^18.3.5", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.18", + "eslint": "^9.9.1", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.11", + "globals": "^15.9.0", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "typescript": "^5.5.3", + "typescript-eslint": "^8.3.0", + "vite": "^5.4.2" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2aa7205 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..0eb6ed1 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,247 @@ +import { useState, useEffect } from "react"; + +const INITIAL_AMOUNT = 324000; +const INITIAL_TIMESTAMP = 1619582400 * 1000; // Convert to milliseconds +const WEEK_IN_MS = 7 * 24 * 60 * 60 * 1000; +const USD_TO_RUB_RATE = 97; // Average exchange rate as of 2025 + +function calculateDebt() { + const now = Date.now(); + const timeDiff = now - INITIAL_TIMESTAMP; + const weeksPassed = Math.floor(timeDiff / WEEK_IN_MS); + return INITIAL_AMOUNT * Math.pow(2, weeksPassed); +} + +function formatLargeNumber(num: number): string { + return num.toLocaleString("fullwide", { useGrouping: true }); +} + +function humanizeNumber(num: number): string { + const units = [ + "", + "thousand", + "million", + "billion", + "trillion", + "quadrillion", + "quintillion", + "sextillion", + "septillion", + "octillion", + "nonillion", + "decillion", + "undecillion", + "duodecillion", + "tredecillion", + "quattuordecillion", + "quindecillion", + "sexdecillion", + "septendecillion", + "octodecillion", + "novemdecillion", + "vigintillion", + "unvigintillion", + "duovigintillion", + "trevigintillion", + "quattuorvigintillion", + "quinvigintillion", + "sexvigintillion", + "septenvigintillion", + "octovigintillion", + "novemvigintillion", + "trigintillion", + "untrigintillion", + "duotrigintillion", + "googol", + "centillion", + ]; + + // Handle numbers larger than our named units + if (num >= Math.pow(10, units.length * 3)) { + const exponent = Math.floor(Math.log10(num)); + return `10^${exponent} (${exponent}-digit number)`; + } + + let unitIndex = 0; + let value = num; + + while (value >= 1000 && unitIndex < units.length - 1) { + value /= 1000; + unitIndex++; + } + + // Round to 2 decimal places + value = Math.round(value * 100) / 100; + + // For very large numbers, add scientific notation + const scientificNotation = unitIndex > 10 ? ` (10^${unitIndex * 3})` : ""; + + return `${value} ${units[unitIndex]}${scientificNotation}`; +} + +function getNextDoubleDate(): Date { + const now = Date.now(); + const weeksSinceStart = Math.floor((now - INITIAL_TIMESTAMP) / WEEK_IN_MS); + const nextDoubleTimestamp = + INITIAL_TIMESTAMP + (weeksSinceStart + 1) * WEEK_IN_MS; + return new Date(nextDoubleTimestamp); +} + +function App() { + const [debt, setDebt] = useState(calculateDebt()); + const [timeUntilDouble, setTimeUntilDouble] = useState(""); + + useEffect(() => { + const timer = setInterval(() => { + setDebt(calculateDebt()); + + const nextDouble = getNextDoubleDate(); + const timeLeft = nextDouble.getTime() - Date.now(); + + const days = Math.floor(timeLeft / (24 * 60 * 60 * 1000)); + const hours = Math.floor( + (timeLeft % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000) + ); + const minutes = Math.floor((timeLeft % (60 * 60 * 1000)) / (60 * 1000)); + const seconds = Math.floor((timeLeft % (60 * 1000)) / 1000); + + setTimeUntilDouble(`${days}d ${hours}h ${minutes}m ${seconds}s`); + }, 1000); + + return () => clearInterval(timer); + }, []); + + const rubleDebt = debt * USD_TO_RUB_RATE; + + return ( +
+ {/* Background gradient effects */} +
+
+ +
+
+ {/* Header */} +
+
+

+ How much does Google owe Russia? +

+
+
+ + {/* Main Content */} +
+
+ {/* USD Section */} +
+

+ Current Debt Amount* (USD): +

+
+
+ $ + + {formatLargeNumber(debt)} + +
+
+ ≈ {humanizeNumber(debt)} dollars +
+
+
+ + {/* Ruble Section */} +
+
+

+ Current Debt Amount* (RUB): +

+
+
+ + + {formatLargeNumber(rubleDebt)} + +
+
+ ≈ {humanizeNumber(rubleDebt)} rubles +
+
+ Based on the average exchange rate of 97 RUB per USD as of + 2025. +
+
+
+
+ + {/* Timer Section */} +
+
+

+ Next Doubling In: +

+
+ {timeUntilDouble} +
+
+
+ + {/* Info Section */} +
+
+
+ Started on: + + {new Date(INITIAL_TIMESTAMP).toLocaleDateString()} + +
+
+ Initial amount: + + ${formatLargeNumber(INITIAL_AMOUNT)} (₽ + {formatLargeNumber(INITIAL_AMOUNT * USD_TO_RUB_RATE)}) + +
+
+ Doubles every: + 7 days +
+
+ Exchange rate: + + 1 USD = {USD_TO_RUB_RATE} RUB + +
+
+
+
+ + {/* Disclaimer */} +
+

+ made with ❤️ by{" "} + + clxud + +

+

+ This is a satirical website. Numbers are fictional and for + entertainment purposes only. +

+

+ * Current amount is calculated based on the amount owed after + the grace period of nine months. +

+
+
+
+
+
+ ); +} + +export default App; diff --git a/src/assets/favicon.ico b/src/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8a5933672b2ca0200b5ede49d5a3a59add87f05a GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..b5c61c9 --- /dev/null +++ b/src/index.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..0ebf5a7 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App.tsx"; +import "./index.css"; + +createRoot(document.getElementById("root")!).render( + + + +); diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..d21f1cd --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..f0a2350 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..0d3d714 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..acf5769 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + optimizeDeps: { + exclude: ["lucide-react"], + }, +});