From 963322206080394805b0fe4e8a047e6497f657e7 Mon Sep 17 00:00:00 2001 From: Fhj0607 Date: Wed, 15 Apr 2026 09:52:24 +0200 Subject: [PATCH] Initial commit --- .gitignore | 108 ++++++++++++++++++++++++++--------- Study-Sprint.sln | 29 ++++++++++ app/(tabs)/explore.tsx | 2 +- package-lock.json | 126 +++++++++++++++++++++++++++++++++++++++++ package.json | 9 +-- supabase/supabase.ts | 7 +++ 6 files changed, 249 insertions(+), 32 deletions(-) create mode 100644 Study-Sprint.sln create mode 100644 supabase/supabase.ts diff --git a/.gitignore b/.gitignore index f8c6c2e..a0a224e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,97 @@ -# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files - -# dependencies +# --------------------------- +# Node / Expo / React Native +# --------------------------- node_modules/ - -# Expo .expo/ dist/ web-build/ expo-env.d.ts - -# Native -.kotlin/ -*.orig.* -*.jks -*.p8 -*.p12 -*.key -*.mobileprovision - -# Metro .metro-health-check* +*.tsbuildinfo -# debug +# Local env files +.env*.local +.env + +# Logs +*.log npm-debug.* yarn-debug.* yarn-error.* # macOS .DS_Store + +# --------------------------- +# Android / React Native native +# Keep /android and /ios ONLY if you commit native code +# Remove these two lines if you want generated native folders ignored +# --------------------------- +.gradle/ +build/ +local.properties +captures/ +.externalNativeBuild/ +.cxx/ +*.aab +*.apk +output-metadata.json +*.hprof +.kotlin/ + +# --------------------------- +# IntelliJ / Android Studio / VS Code +# --------------------------- +*.iml +.idea/ +.vscode/ +misc.xml +deploymentTargetDropDown.xml +render.experimental.xml + +# --------------------------- +# Secrets / signing / platform keys +# --------------------------- +*.jks +*.keystore +*.p8 +*.p12 +*.key *.pem +*.mobileprovision +google-services.json -# local env files -.env*.local - -# typescript -*.tsbuildinfo - -app-example - -# generated native folders -/ios +# --------------------------- +# iOS / Android generated native folders +# Ignore these only for Expo managed/prebuild workflow +# Comment them out if you keep native code in repo +# --------------------------- /android +/ios + +# --------------------------- +# .NET / ASP.NET Core Web API +# --------------------------- +**/bin/ +**/obj/ +**/.vs/ +*.user +*.rsuser +*.suo + +# App settings / local secrets +**/appsettings.Development.json +**/secrets.json + +# EF Core / local DB artifacts +*.db +*.db-shm +*.db-wal +*.sqlite +*.sqlite3 + +# --------------------------- +# Misc +# --------------------------- +*.orig.* +app-example \ No newline at end of file diff --git a/Study-Sprint.sln b/Study-Sprint.sln new file mode 100644 index 0000000..9a7956d --- /dev/null +++ b/Study-Sprint.sln @@ -0,0 +1,29 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "backend", "backend", "{1AE8ACA6-933B-BF2A-3671-3E2EAC007D16}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "study-sprint-api", "backend\study-sprint-api\study-sprint-api.csproj", "{1003D4A4-D46B-F75C-EC68-321C2ED62795}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1003D4A4-D46B-F75C-EC68-321C2ED62795}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1003D4A4-D46B-F75C-EC68-321C2ED62795}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1003D4A4-D46B-F75C-EC68-321C2ED62795}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1003D4A4-D46B-F75C-EC68-321C2ED62795}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {1003D4A4-D46B-F75C-EC68-321C2ED62795} = {1AE8ACA6-933B-BF2A-3671-3E2EAC007D16} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2870106D-D84D-4FC9-A7C9-41F972CCDF07} + EndGlobalSection +EndGlobal diff --git a/app/(tabs)/explore.tsx b/app/(tabs)/explore.tsx index 71518f9..4fa3032 100644 --- a/app/(tabs)/explore.tsx +++ b/app/(tabs)/explore.tsx @@ -1,11 +1,11 @@ import { Image } from 'expo-image'; import { Platform, StyleSheet } from 'react-native'; -import { Collapsible } from '@/components/ui/collapsible'; import { ExternalLink } from '@/components/external-link'; import ParallaxScrollView from '@/components/parallax-scroll-view'; import { ThemedText } from '@/components/themed-text'; import { ThemedView } from '@/components/themed-view'; +import { Collapsible } from '@/components/ui/collapsible'; import { IconSymbol } from '@/components/ui/icon-symbol'; import { Fonts } from '@/constants/theme'; diff --git a/package-lock.json b/package-lock.json index b10521d..88bb957 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@react-navigation/bottom-tabs": "^7.4.0", "@react-navigation/elements": "^2.6.3", "@react-navigation/native": "^7.1.8", + "@supabase/supabase-js": "^2.103.1", "expo": "~54.0.33", "expo-constants": "~18.0.13", "expo-font": "~14.0.11", @@ -3148,6 +3149,113 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@supabase/auth-js": { + "version": "2.103.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.103.1.tgz", + "integrity": "sha512-HsXbSv6AkX7oBqHmbwtE1oUtK0KiWQmA0KeYoEd4SnsZeSmUOe+mNfEyL3mZbBCdgORJuMDoQX2ofvwayV4tdQ==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.103.1", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.103.1.tgz", + "integrity": "sha512-OlKF1YhKO+zlxEXYct9NcLUFUBuChlt4t85lMYhVrdN8y4lJSBG+zUuqMz/ZrnBviKq43+D3DsIgBu+Vjq51vw==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/phoenix": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@supabase/phoenix/-/phoenix-0.4.0.tgz", + "integrity": "sha512-RHSx8bHS02xwfHdAbX5Lpbo6PXbgyf7lTaXTlwtFDPwOIw64NnVRwFAXGojHhjtVYI+PEPNSWwkL90f4agN3bw==", + "license": "MIT" + }, + "node_modules/@supabase/postgrest-js": { + "version": "2.103.1", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.103.1.tgz", + "integrity": "sha512-nZaN1eYcTXoZt+UyFp6PtPWJIIEoL4r9UpfbCT4cTRz5q6B6IGltsSfwdNWq15SrXNyYj5NlJKL8UIDkHrFf0g==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.103.1", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.103.1.tgz", + "integrity": "sha512-JxuM0Gju9WlRkXMU/lSE94Fh+euCzc2xM+R6oaA2xeqJD959L2Ignj0mIvshfhJRglQ2GNJgcdPf1o9Xx48XFw==", + "license": "MIT", + "dependencies": { + "@supabase/phoenix": "^0.4.0", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js/node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.103.1", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.103.1.tgz", + "integrity": "sha512-rkbWonWLbfrtVwdVhr9DZI+VV7TVd+j4QlxkPWzepwqx7pWj6bDxOAqTXaQNWR3aPQR6a+zsK1AAc6KGQH1mtA==", + "license": "MIT", + "dependencies": { + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.103.1", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.103.1.tgz", + "integrity": "sha512-mFdjUK+Rw6iQnpTvj9KiGdL3sHo/M6SkT+VQ7w2KzQ9u6V5OM503rXShJBH3L/vVT5vz8FzRrNOfTIyIsTxswg==", + "license": "MIT", + "dependencies": { + "@supabase/auth-js": "2.103.1", + "@supabase/functions-js": "2.103.1", + "@supabase/postgrest-js": "2.103.1", + "@supabase/realtime-js": "2.103.1", + "@supabase/storage-js": "2.103.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@tybys/wasm-util": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", @@ -3285,6 +3393,15 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "license": "MIT" }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", @@ -7407,6 +7524,15 @@ "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", "license": "BSD-3-Clause" }, + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", diff --git a/package.json b/package.json index d5129e2..46e10fa 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@react-navigation/bottom-tabs": "^7.4.0", "@react-navigation/elements": "^2.6.3", "@react-navigation/native": "^7.1.8", + "@supabase/supabase-js": "^2.103.1", "expo": "~54.0.33", "expo-constants": "~18.0.13", "expo-font": "~14.0.11", @@ -31,17 +32,17 @@ "react-dom": "19.1.0", "react-native": "0.81.5", "react-native-gesture-handler": "~2.28.0", - "react-native-worklets": "0.5.1", "react-native-reanimated": "~4.1.1", "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", - "react-native-web": "~0.21.0" + "react-native-web": "~0.21.0", + "react-native-worklets": "0.5.1" }, "devDependencies": { "@types/react": "~19.1.0", - "typescript": "~5.9.2", "eslint": "^9.25.0", - "eslint-config-expo": "~10.0.0" + "eslint-config-expo": "~10.0.0", + "typescript": "~5.9.2" }, "private": true } diff --git a/supabase/supabase.ts b/supabase/supabase.ts new file mode 100644 index 0000000..912d7fe --- /dev/null +++ b/supabase/supabase.ts @@ -0,0 +1,7 @@ + +import { createClient } from '@supabase/supabase-js' + +export const supabase = createClient( + process.env.EXPO_PUBLIC_SUPABASE_URL, + process.env.EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY +) \ No newline at end of file