├── .env ├── .gitignore ├── .npmrc ├── amplify ├── .config │ └── project-config.json ├── README.md ├── backend │ ├── auth │ │ └── devember0cbf1996 │ │ │ └── cli-inputs.json │ ├── backend-config.json │ ├── tags.json │ └── types │ │ └── amplify-dependent-resources-ref.d.ts ├── cli.json ├── hooks │ └── README.md └── team-provider-info.json ├── app.json ├── assets ├── adaptive-icon.png ├── data │ └── day5 │ │ └── appartments.json ├── favicon.png ├── icon.png ├── lottie │ ├── netflix.json │ ├── netflix.lottie │ ├── rain.json │ └── sunny.json └── splash.png ├── babel.config.js ├── eas.json ├── google-services.json ├── metro.config.js ├── package-lock.json ├── package.json ├── src ├── amplifyconfiguration.json ├── app │ ├── (days) │ │ ├── day1 │ │ │ └── index.tsx │ │ ├── day10 │ │ │ ├── index.tsx │ │ │ └── protected │ │ │ │ ├── _layout.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── second.tsx │ │ ├── day11 │ │ │ ├── camera.tsx │ │ │ └── index.tsx │ │ ├── day12 │ │ │ ├── feed.tsx │ │ │ └── index.tsx │ │ ├── day14 │ │ │ ├── index.tsx │ │ │ └── notifications │ │ │ │ ├── _layout.tsx │ │ │ │ └── index.tsx │ │ ├── day15 │ │ │ ├── index.tsx │ │ │ └── todo │ │ │ │ └── index.tsx │ │ ├── day16 │ │ │ ├── index.tsx │ │ │ └── todo │ │ │ │ ├── _layout.tsx │ │ │ │ └── index.tsx │ │ ├── day17 │ │ │ ├── index.tsx │ │ │ └── todo │ │ │ │ ├── _layout.tsx │ │ │ │ └── index.tsx │ │ ├── day2 │ │ │ ├── index.tsx │ │ │ └── onboarding.tsx │ │ ├── day21 │ │ │ ├── index.tsx │ │ │ ├── paywall.tsx │ │ │ └── pro.tsx │ │ ├── day3 │ │ │ ├── editor.tsx │ │ │ └── index.tsx │ │ ├── day4 │ │ │ ├── animation.tsx │ │ │ ├── index.tsx │ │ │ └── splash.tsx │ │ ├── day5 │ │ │ ├── airbnb.tsx │ │ │ └── index.tsx │ │ ├── day6 │ │ │ ├── TinderScreen.tsx │ │ │ ├── index.tsx │ │ │ └── tinder.tsx │ │ ├── day7 │ │ │ ├── index.tsx │ │ │ └── memos.tsx │ │ ├── day8 │ │ │ ├── index.tsx │ │ │ └── weather.tsx │ │ └── day9 │ │ │ ├── auth │ │ │ ├── _layout.tsx │ │ │ ├── sign-in.tsx │ │ │ └── sign-up.tsx │ │ │ ├── index.tsx │ │ │ └── protected │ │ │ ├── _layout.tsx │ │ │ └── index.tsx │ ├── _layout.tsx │ └── index.tsx ├── aws-exports.js └── components │ ├── core │ └── DayListItem.tsx │ ├── day10 │ └── BiometricsProvider.tsx │ ├── day12 │ └── VideoPost.tsx │ ├── day15 │ ├── NewTaskInput.tsx │ └── TaskListItem.tsx │ ├── day16 │ ├── NewTaskInput.tsx │ ├── TaskListItem.tsx │ ├── TasksContextProvider.tsx │ └── dummyTasks.ts │ ├── day17 │ ├── NewTaskInput.tsx │ ├── TaskListItem.tsx │ ├── TasksStore.tsx │ └── dummyTasks.ts │ ├── day3 │ └── MarkdownDisplay.tsx │ ├── day4 │ └── AnimatedSplashScreen.tsx │ ├── day5 │ ├── ApartmentListItem.tsx │ └── CustomMarker.tsx │ ├── day6 │ └── TinderCard.tsx │ ├── day7 │ └── MemoListItem.tsx │ └── day8 │ └── ForecastItem.tsx └── tsconfig.json /.env: -------------------------------------------------------------------------------- 1 | EXPO_PUBLIC_OPEN_WEATHER_KEY=6beb908e4186fa331dd1e1f2e1b5c2a1 2 | EXPO_PUBLIC_VEXO_API_KEY=7ca01664-e3f5-4f36-bfb3-1b9ae05edd85 3 | 4 | EXPO_PUBLIC_REVENUECAT_IOS_KEY=appl_qHiIUJZCQwbFfQXkDAgnKjgSxkp -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files 2 | 3 | ios/ 4 | android/ 5 | 6 | # dependencies 7 | node_modules/ 8 | 9 | # Expo 10 | .expo/ 11 | dist/ 12 | web-build/ 13 | 14 | # Native 15 | *.orig.* 16 | *.jks 17 | *.p8 18 | *.p12 19 | *.key 20 | *.mobileprovision 21 | 22 | # Metro 23 | .metro-health-check* 24 | 25 | # debug 26 | npm-debug.* 27 | yarn-debug.* 28 | yarn-error.* 29 | 30 | # macOS 31 | .DS_Store 32 | *.pem 33 | 34 | # local env files 35 | .env*.local 36 | 37 | # typescript 38 | *.tsbuildinfo 39 | 40 | 41 | 42 | #amplify-do-not-edit-begin 43 | amplify/\#current-cloud-backend 44 | amplify/.config/local-* 45 | amplify/logs 46 | amplify/mock-data 47 | amplify/mock-api-resources 48 | amplify/backend/amplify-meta.json 49 | amplify/backend/.temp 50 | build/ 51 | dist/ 52 | node_modules/ 53 | aws-exports.js 54 | awsconfiguration.json 55 | amplifyconfiguration.json 56 | amplifyconfiguration.dart 57 | amplify-build-config.json 58 | amplify-gradle-config.json 59 | amplifytools.xcconfig 60 | .secret-* 61 | **.sample 62 | #amplify-do-not-edit-end 63 | 64 | 65 | !amplifyconfiguration.json 66 | !aws-exports.js -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | legacy-peer-deps=true -------------------------------------------------------------------------------- /amplify/.config/project-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "projectName": "DEVember", 3 | "version": "3.1", 4 | "frontend": "javascript", 5 | "javascript": { 6 | "framework": "react-native", 7 | "config": { 8 | "SourceDir": "src", 9 | "DistributionDir": "/", 10 | "BuildCommand": "npm run-script build", 11 | "StartCommand": "npm run-script start" 12 | } 13 | }, 14 | "providers": [ 15 | "awscloudformation" 16 | ] 17 | } -------------------------------------------------------------------------------- /amplify/README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Amplify CLI 2 | This directory was generated by [Amplify CLI](https://docs.amplify.aws/cli). 3 | 4 | Helpful resources: 5 | - Amplify documentation: https://docs.amplify.aws 6 | - Amplify CLI documentation: https://docs.amplify.aws/cli 7 | - More details on this folder & generated files: https://docs.amplify.aws/cli/reference/files 8 | - Join Amplify's community: https://amplify.aws/community/ 9 | -------------------------------------------------------------------------------- /amplify/backend/auth/devember0cbf1996/cli-inputs.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1", 3 | "cognitoConfig": { 4 | "identityPoolName": "devember0cbf1996_identitypool_0cbf1996", 5 | "allowUnauthenticatedIdentities": false, 6 | "resourceNameTruncated": "devemb0cbf1996", 7 | "userPoolName": "devember0cbf1996_userpool_0cbf1996", 8 | "autoVerifiedAttributes": [ 9 | "email" 10 | ], 11 | "mfaConfiguration": "OFF", 12 | "mfaTypes": [ 13 | "SMS Text Message" 14 | ], 15 | "smsAuthenticationMessage": "Your authentication code is {####}", 16 | "smsVerificationMessage": "Your verification code is {####}", 17 | "emailVerificationSubject": "Your verification code", 18 | "emailVerificationMessage": "Your verification code is {####}", 19 | "defaultPasswordPolicy": false, 20 | "passwordPolicyMinLength": 8, 21 | "passwordPolicyCharacters": [], 22 | "requiredAttributes": [ 23 | "email" 24 | ], 25 | "aliasAttributes": [], 26 | "userpoolClientGenerateSecret": false, 27 | "userpoolClientRefreshTokenValidity": 30, 28 | "userpoolClientWriteAttributes": [ 29 | "email" 30 | ], 31 | "userpoolClientReadAttributes": [ 32 | "email" 33 | ], 34 | "userpoolClientLambdaRole": "devemb0cbf1996_userpoolclient_lambda_role", 35 | "userpoolClientSetAttributes": false, 36 | "sharedId": "0cbf1996", 37 | "resourceName": "devember0cbf1996", 38 | "authSelections": "identityPoolAndUserPool", 39 | "useDefault": "default", 40 | "usernameAttributes": [ 41 | "email" 42 | ], 43 | "userPoolGroupList": [], 44 | "serviceName": "Cognito", 45 | "usernameCaseSensitive": false, 46 | "useEnabledMfas": true 47 | } 48 | } -------------------------------------------------------------------------------- /amplify/backend/backend-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "auth": { 3 | "devember0cbf1996": { 4 | "customAuth": false, 5 | "dependsOn": [], 6 | "frontendAuthConfig": { 7 | "mfaConfiguration": "OFF", 8 | "mfaTypes": [ 9 | "SMS" 10 | ], 11 | "passwordProtectionSettings": { 12 | "passwordPolicyCharacters": [], 13 | "passwordPolicyMinLength": 8 14 | }, 15 | "signupAttributes": [ 16 | "EMAIL" 17 | ], 18 | "socialProviders": [], 19 | "usernameAttributes": [ 20 | "EMAIL" 21 | ], 22 | "verificationMechanisms": [ 23 | "EMAIL" 24 | ] 25 | }, 26 | "providerPlugin": "awscloudformation", 27 | "service": "Cognito" 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /amplify/backend/tags.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Key": "user:Stack", 4 | "Value": "{project-env}" 5 | }, 6 | { 7 | "Key": "user:Application", 8 | "Value": "{project-name}" 9 | } 10 | ] -------------------------------------------------------------------------------- /amplify/backend/types/amplify-dependent-resources-ref.d.ts: -------------------------------------------------------------------------------- 1 | export type AmplifyDependentResourcesAttributes = { 2 | "auth": { 3 | "devember0cbf1996": { 4 | "AppClientID": "string", 5 | "AppClientIDWeb": "string", 6 | "IdentityPoolId": "string", 7 | "IdentityPoolName": "string", 8 | "UserPoolArn": "string", 9 | "UserPoolId": "string", 10 | "UserPoolName": "string" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /amplify/cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "features": { 3 | "graphqltransformer": { 4 | "addmissingownerfields": true, 5 | "improvepluralization": false, 6 | "validatetypenamereservedwords": true, 7 | "useexperimentalpipelinedtransformer": true, 8 | "enableiterativegsiupdates": true, 9 | "secondarykeyasgsi": true, 10 | "skipoverridemutationinputtypes": true, 11 | "transformerversion": 2, 12 | "suppressschemamigrationprompt": true, 13 | "securityenhancementnotification": false, 14 | "showfieldauthnotification": false, 15 | "usesubusernamefordefaultidentityclaim": true, 16 | "usefieldnameforprimarykeyconnectionfield": false, 17 | "enableautoindexquerynames": true, 18 | "respectprimarykeyattributesonconnectionfield": true, 19 | "shoulddeepmergedirectiveconfigdefaults": false, 20 | "populateownerfieldforstaticgroupauth": true 21 | }, 22 | "frontend-ios": { 23 | "enablexcodeintegration": true 24 | }, 25 | "auth": { 26 | "enablecaseinsensitivity": true, 27 | "useinclusiveterminology": true, 28 | "breakcirculardependency": true, 29 | "forcealiasattributes": false, 30 | "useenabledmfas": true 31 | }, 32 | "codegen": { 33 | "useappsyncmodelgenplugin": true, 34 | "usedocsgeneratorplugin": true, 35 | "usetypesgeneratorplugin": true, 36 | "cleangeneratedmodelsdirectory": true, 37 | "retaincasestyle": true, 38 | "addtimestampfields": true, 39 | "handlelistnullabilitytransparently": true, 40 | "emitauthprovider": true, 41 | "generateindexrules": true, 42 | "enabledartnullsafety": true, 43 | "generatemodelsforlazyloadandcustomselectionset": false 44 | }, 45 | "appsync": { 46 | "generategraphqlpermissions": true 47 | }, 48 | "latestregionsupport": { 49 | "pinpoint": 1, 50 | "translate": 1, 51 | "transcribe": 1, 52 | "rekognition": 1, 53 | "textract": 1, 54 | "comprehend": 1 55 | }, 56 | "project": { 57 | "overrides": true 58 | } 59 | }, 60 | "debug": { 61 | "shareProjectConfig": false 62 | } 63 | } -------------------------------------------------------------------------------- /amplify/hooks/README.md: -------------------------------------------------------------------------------- 1 | # Command Hooks 2 | 3 | Command hooks can be used to run custom scripts upon Amplify CLI lifecycle events like pre-push, post-add-function, etc. 4 | 5 | To get started, add your script files based on the expected naming convention in this directory. 6 | 7 | Learn more about the script file naming convention, hook parameters, third party dependencies, and advanced configurations at https://docs.amplify.aws/cli/usage/command-hooks 8 | -------------------------------------------------------------------------------- /amplify/team-provider-info.json: -------------------------------------------------------------------------------- 1 | { 2 | "dev": { 3 | "awscloudformation": { 4 | "AuthRoleName": "amplify-devember-dev-121803-authRole", 5 | "UnauthRoleArn": "arn:aws:iam::704219588443:role/amplify-devember-dev-121803-unauthRole", 6 | "AuthRoleArn": "arn:aws:iam::704219588443:role/amplify-devember-dev-121803-authRole", 7 | "Region": "us-east-1", 8 | "DeploymentBucketName": "amplify-devember-dev-121803-deployment", 9 | "UnauthRoleName": "amplify-devember-dev-121803-unauthRole", 10 | "StackName": "amplify-devember-dev-121803", 11 | "StackId": "arn:aws:cloudformation:us-east-1:704219588443:stack/amplify-devember-dev-121803/023532a0-968d-11ee-9dd5-0ec275e4dbf7", 12 | "AmplifyAppId": "d1oqqadup6744a" 13 | }, 14 | "categories": { 15 | "auth": { 16 | "devember0cbf1996": {} 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "DEVember", 4 | "slug": "DEVember", 5 | "scheme": "devember", 6 | "version": "1.0.1", 7 | "orientation": "portrait", 8 | "icon": "./assets/icon.png", 9 | "userInterfaceStyle": "light", 10 | "splash": { 11 | "image": "./assets/splash.png", 12 | "resizeMode": "contain", 13 | "backgroundColor": "#000000" 14 | }, 15 | "assetBundlePatterns": ["**/*"], 16 | "ios": { 17 | "supportsTablet": true, 18 | "bundleIdentifier": "com.vadinsavin.DEVember", 19 | "infoPlist": { 20 | "NSFaceIDUsageDescription": "Allow $(PRODUCT_NAME) to use Face ID to unlock Secret Info.", 21 | "NSCameraUsageDescription": "$(PRODUCT_NAME) needs access to your Camera to take photos.", 22 | "NSMicrophoneUsageDescription": "$(PRODUCT_NAME) needs access to your Microphone." 23 | } 24 | }, 25 | "android": { 26 | "adaptiveIcon": { 27 | "foregroundImage": "./assets/adaptive-icon.png", 28 | "backgroundColor": "#ffffff" 29 | }, 30 | "permissions": [ 31 | "android.permission.USE_BIOMETRIC", 32 | "android.permission.USE_FINGERPRINT", 33 | "android.permission.CAMERA", 34 | "android.permission.RECORD_AUDIO" 35 | ], 36 | "package": "com.vadinsavin.DEVember", 37 | "googleServicesFile": "./google-services.json" 38 | }, 39 | "web": { 40 | "favicon": "./assets/favicon.png", 41 | "bundler": "metro" 42 | }, 43 | "plugins": [ 44 | "expo-router", 45 | [ 46 | "expo-local-authentication", 47 | { 48 | "faceIDPermission": "Allow $(PRODUCT_NAME) to use Face ID to unlock Secret Info." 49 | } 50 | ], 51 | [ 52 | "react-native-vision-camera", 53 | { 54 | "cameraPermissionText": "$(PRODUCT_NAME) needs access to your Camera to take photos.", 55 | "enableMicrophonePermission": true, 56 | "microphonePermissionText": "$(PRODUCT_NAME) needs access to your Microphone.", 57 | "enableCodeScanner": true 58 | } 59 | ] 60 | ], 61 | "experiments": { 62 | "tsconfigPaths": true 63 | }, 64 | "extra": { 65 | "router": { 66 | "origin": false 67 | }, 68 | "eas": { 69 | "projectId": "ee991416-c2d4-425a-affe-4ea58d9aa6c0" 70 | } 71 | }, 72 | "runtimeVersion": { 73 | "policy": "appVersion" 74 | }, 75 | "updates": { 76 | "url": "https://u.expo.dev/ee991416-c2d4-425a-affe-4ea58d9aa6c0" 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/notJust-dev/DEVember/6c089768bddc178e892fcc41f938fec168b252f4/assets/adaptive-icon.png -------------------------------------------------------------------------------- /assets/data/day5/appartments.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "latitude": 37.7749, 5 | "longitude": -122.4194, 6 | "price": 150, 7 | "title": "Cozy Studio in Downtown SF", 8 | "numberOfStars": 5, 9 | "rating": 4.8, 10 | "image": "https://news.airbnb.com/wp-content/uploads/sites/4/2019/06/PJM020719Q202_Luxe_WanakaNZ_LivingRoom_0264-LightOn_R1.jpg?fit=2500%2C1666" 11 | }, 12 | { 13 | "id": 2, 14 | "latitude": 37.7785, 15 | "longitude": -122.4313, 16 | "price": 200, 17 | "title": "Modern Apartment Near Golden Gate Park", 18 | "numberOfStars": 4, 19 | "rating": 4.5, 20 | "image": "https://media.cntraveler.com/photos/5d112d50c4d7bd806dbc00a4/16:9/w_2560%2Cc_limit/airbnb%2520luxe.jpg" 21 | }, 22 | { 23 | "id": 3, 24 | "latitude": 37.7599, 25 | "longitude": -122.4148, 26 | "price": 120, 27 | "title": "Charming Victorian Flat in Mission District", 28 | "numberOfStars": 3, 29 | "rating": 4.2, 30 | "image": "https://a0.muscache.com/pictures/27c09c24-e29d-4cd9-8c28-edfa84868da4.jpg" 31 | }, 32 | { 33 | "id": 4, 34 | "latitude": 37.7975, 35 | "longitude": -122.4143, 36 | "price": 180, 37 | "title": "Luxury Loft in Financial District", 38 | "numberOfStars": 5, 39 | "rating": 4.9, 40 | "image": "https://a0.muscache.com/im/pictures/b61ba60e-7b9e-48b5-9036-aacc2579a39d.jpg" 41 | }, 42 | { 43 | "id": 5, 44 | "latitude": 37.7648, 45 | "longitude": -122.463, 46 | "price": 160, 47 | "title": "Spacious 2-Bedroom in Sunset District", 48 | "numberOfStars": 4, 49 | "rating": 4.6, 50 | "image": "https://pyxis.nymag.com/v1/imgs/5f1/db3/bce7fbac042b55a47b4d4260428262c17d-23-private-swimming-hole-cornwall-ct.rsquare.w600.jpg" 51 | } 52 | ] 53 | -------------------------------------------------------------------------------- /assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/notJust-dev/DEVember/6c089768bddc178e892fcc41f938fec168b252f4/assets/favicon.png -------------------------------------------------------------------------------- /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/notJust-dev/DEVember/6c089768bddc178e892fcc41f938fec168b252f4/assets/icon.png -------------------------------------------------------------------------------- /assets/lottie/netflix.lottie: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/notJust-dev/DEVember/6c089768bddc178e892fcc41f938fec168b252f4/assets/lottie/netflix.lottie -------------------------------------------------------------------------------- /assets/lottie/rain.json: -------------------------------------------------------------------------------- 1 | {"v":"5.5.6","fr":24,"ip":0,"op":255,"w":282,"h":184,"nm":"Layer 38 Outlines Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 38 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[139.345,101.243,0],"ix":2},"a":{"a":0,"k":[75.715,58.382,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.181,-20.365],[-9.181,20.365]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":3,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":16,"s":[0]},{"i":{"x":[0.587],"y":[1]},"o":{"x":[0.165],"y":[0]},"t":33,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.334],"y":[0]},"t":45,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":46,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":56,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":66,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":67,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":77,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":87,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":88,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":98,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":109,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":119,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":129,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":130,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":140,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":150,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":151,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":161,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":171,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":172,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":182,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":192,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":193,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":203,"s":[0]},{"t":213,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":3,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":16,"s":[100]},{"i":{"x":[0.587],"y":[1]},"o":{"x":[0.165],"y":[0]},"t":33,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.334],"y":[0]},"t":45,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":46,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":56,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":66,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":67,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":77,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":87,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":88,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":98,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":109,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":119,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":129,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":130,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":140,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":150,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":151,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":161,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":171,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":172,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":182,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":192,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":193,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":203,"s":[100]},{"t":213,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.999999820485,0.999999760646,0.999999820485,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[90.361,88.899],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.343,13.855],[6.343,-13.855]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":6,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":19,"s":[0]},{"i":{"x":[0.587],"y":[1]},"o":{"x":[0.165],"y":[0]},"t":41,"s":[0]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.334],"y":[0]},"t":53,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":54,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":64,"s":[0]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":74,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":75,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":85,"s":[0]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":106,"s":[0]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":116,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":117,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":127,"s":[0]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":137,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":138,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":148,"s":[0]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":158,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":159,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":169,"s":[0]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":179,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":180,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":190,"s":[0]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":200,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":201,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":211,"s":[0]},{"t":221,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":6,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.587],"y":[1]},"o":{"x":[0.165],"y":[0]},"t":41,"s":[100]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.334],"y":[0]},"t":53,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[12.445]},"t":54,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":64,"s":[100]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":74,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[12.445]},"t":75,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":85,"s":[100]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[12.445]},"t":96,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":106,"s":[100]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":116,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[12.445]},"t":117,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":127,"s":[100]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":137,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[12.445]},"t":138,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":148,"s":[100]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":158,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[12.445]},"t":159,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":169,"s":[100]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":179,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[12.445]},"t":180,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":190,"s":[100]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":200,"s":[0]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[12.445]},"t":201,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":211,"s":[100]},{"t":221,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.999999820485,0.999999760646,0.999999820485,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[76.505,82.39],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.512,-16.693],[-7.512,16.693]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":23,"s":[0]},{"i":{"x":[0.661],"y":[1]},"o":{"x":[0.186],"y":[0]},"t":51,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.334],"y":[0]},"t":63,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":64,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":74,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":84,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":85,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":105,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":106,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":116,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":126,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":127,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":137,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":147,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":148,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":158,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":168,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":169,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":179,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":189,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":190,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":200,"s":[0]},{"i":{"x":[0.668],"y":[0.99]},"o":{"x":[0.167],"y":[0]},"t":210,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[-12.445]},"t":211,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":221,"s":[0]},{"t":231,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":23,"s":[100]},{"i":{"x":[0.661],"y":[1]},"o":{"x":[0.186],"y":[0]},"t":51,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.334],"y":[0]},"t":63,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":64,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":74,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":84,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":85,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":105,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":106,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":116,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":126,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":127,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":137,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":147,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":148,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":158,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":168,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":169,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":179,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":189,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":190,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":200,"s":[100]},{"i":{"x":[0.668],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":210,"s":[100]},{"i":{"x":[0.828],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":211,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":221,"s":[100]},{"t":231,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.999999820485,0.999999760646,0.999999820485,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[56.641,85.228],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,15.209],[15.304,0],[2.947,-1.066],[14.561,0],[3.498,-16.317],[2.578,0],[0,-13.092],[-13.091,0],[0,0],[0,0]],"o":[[0,-15.304],[-3.315,0],[-5.733,-12.402],[-17.362,0],[-2.322,-0.761],[-13.091,0],[0,13.091],[0,0],[0,0],[15.174,-0.151]],"v":[[68.215,9.681],[40.505,-18.03],[31.065,-16.379],[-1.773,-37.391],[-37.132,-8.839],[-44.512,-10.017],[-68.215,13.688],[-44.512,37.391],[40.788,37.391],[40.788,37.384]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":0,"s":[0]},{"t":23,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":0,"s":[0]},{"t":23,"s":[68]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.999999820485,0.999999760646,0.999999820485,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[75.715,44.891],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,15.209],[15.304,0],[2.947,-1.066],[14.561,0],[3.498,-16.317],[2.578,0],[0,-13.092],[-13.091,0],[0,0],[0,0]],"o":[[0,-15.304],[-3.315,0],[-5.733,-12.402],[-17.362,0],[-2.322,-0.761],[-13.091,0],[0,13.091],[0,0],[0,0],[15.174,-0.151]],"v":[[68.215,9.681],[40.505,-18.03],[31.065,-16.379],[-1.773,-37.391],[-37.132,-8.839],[-44.512,-10.017],[-68.215,13.688],[-44.512,37.391],[40.788,37.391],[40.788,37.384]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":0,"s":[0]},{"t":23,"s":[85]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.05],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":0,"s":[0]},{"t":23,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.999999820485,0.999999760646,0.999999820485,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[75.715,44.891],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":255,"st":0,"bm":0}],"markers":[]} -------------------------------------------------------------------------------- /assets/lottie/sunny.json: -------------------------------------------------------------------------------- 1 | { 2 | "v": "5.5.9", 3 | "fr": 30, 4 | "ip": 0, 5 | "op": 600, 6 | "w": 200, 7 | "h": 200, 8 | "nm": "天气-多云", 9 | "ddd": 0, 10 | "assets": [], 11 | "layers": [ 12 | { 13 | "ddd": 0, 14 | "ind": 1, 15 | "ty": 4, 16 | "nm": "“太阳”轮廓 2", 17 | "sr": 1, 18 | "ks": { 19 | "o": { "a": 0, "k": 100, "ix": 11 }, 20 | "r": { "a": 0, "k": 0, "ix": 10 }, 21 | "p": { "a": 0, "k": [100.005, 99.986, 0], "ix": 2 }, 22 | "a": { "a": 0, "k": [37.356, 37.368, 0], "ix": 1 }, 23 | "s": { "a": 0, "k": [135, 135, 100], "ix": 6 } 24 | }, 25 | "ao": 0, 26 | "shapes": [ 27 | { 28 | "ty": "gr", 29 | "it": [ 30 | { 31 | "ind": 0, 32 | "ty": "sh", 33 | "ix": 1, 34 | "ks": { 35 | "a": 0, 36 | "k": { 37 | "i": [ 38 | [0, 0], 39 | [-20.489, -0.009], 40 | [-0.009, 20.49], 41 | [0, 0], 42 | [20.49, 0.003], 43 | [0.003, -20.49] 44 | ], 45 | "o": [ 46 | [-0.009, 20.49], 47 | [20.49, 0.009], 48 | [0, 0], 49 | [0.003, -20.49], 50 | [-20.49, -0.004], 51 | [0, 0] 52 | ], 53 | "v": [ 54 | [-37.097, -0.008], 55 | [-0.013, 37.109], 56 | [37.103, 0.025], 57 | [37.103, -0.008], 58 | [0.009, -37.113], 59 | [-37.097, -0.02] 60 | ], 61 | "c": true 62 | }, 63 | "ix": 2 64 | }, 65 | "nm": "路径 1", 66 | "mn": "ADBE Vector Shape - Group", 67 | "hd": false 68 | }, 69 | { 70 | "ty": "fl", 71 | "c": { 72 | "a": 0, 73 | "k": [0.929000016755, 0.663000009574, 0.081999999402, 1], 74 | "ix": 4 75 | }, 76 | "o": { "a": 0, "k": 100, "ix": 5 }, 77 | "r": 1, 78 | "bm": 0, 79 | "nm": "填充 1", 80 | "mn": "ADBE Vector Graphic - Fill", 81 | "hd": false 82 | }, 83 | { 84 | "ty": "tr", 85 | "p": { "a": 0, "k": [37.356, 37.368], "ix": 2 }, 86 | "a": { "a": 0, "k": [0, 0], "ix": 1 }, 87 | "s": { "a": 0, "k": [100, 100], "ix": 3 }, 88 | "r": { "a": 0, "k": 0, "ix": 6 }, 89 | "o": { "a": 0, "k": 100, "ix": 7 }, 90 | "sk": { "a": 0, "k": 0, "ix": 4 }, 91 | "sa": { "a": 0, "k": 0, "ix": 5 }, 92 | "nm": "变换" 93 | } 94 | ], 95 | "nm": "组 1", 96 | "np": 2, 97 | "cix": 2, 98 | "bm": 0, 99 | "ix": 1, 100 | "mn": "ADBE Vector Group", 101 | "hd": false 102 | } 103 | ], 104 | "ip": 0, 105 | "op": 601, 106 | "st": 0, 107 | "bm": 0 108 | }, 109 | { 110 | "ddd": 0, 111 | "ind": 2, 112 | "ty": 4, 113 | "nm": "“光芒”轮廓 2", 114 | "sr": 1, 115 | "ks": { 116 | "o": { "a": 0, "k": 100, "ix": 11 }, 117 | "r": { 118 | "a": 1, 119 | "k": [ 120 | { 121 | "i": { "x": [0.833], "y": [0.833] }, 122 | "o": { "x": [0.167], "y": [0.167] }, 123 | "t": 0, 124 | "s": [0] 125 | }, 126 | { "t": 600, "s": [360] } 127 | ], 128 | "ix": 10 129 | }, 130 | "p": { "a": 0, "k": [100.018, 100.016, 0], "ix": 2 }, 131 | "a": { "a": 0, "k": [58.9, 61.35, 0], "ix": 1 }, 132 | "s": { "a": 0, "k": [135, 135, 100], "ix": 6 } 133 | }, 134 | "ao": 0, 135 | "shapes": [ 136 | { 137 | "ty": "gr", 138 | "it": [ 139 | { 140 | "ind": 0, 141 | "ty": "sh", 142 | "ix": 1, 143 | "ks": { 144 | "a": 0, 145 | "k": { 146 | "i": [ 147 | [1.3, 1], 148 | [-0.901, 1.3], 149 | [0, 0], 150 | [-1.299, -0.9], 151 | [0.9, -1.3], 152 | [0, 0] 153 | ], 154 | "o": [ 155 | [-1.301, -1], 156 | [0, 0], 157 | [1, -1.3], 158 | [1.3, 1], 159 | [0, 0], 160 | [-1, 1.3] 161 | ], 162 | "v": [ 163 | [27.951, -38.5], 164 | [27.251, -42.7], 165 | [31.65, -48.7], 166 | [35.85, -49.4], 167 | [36.551, -45.2], 168 | [32.15, -39.2] 169 | ], 170 | "c": true 171 | }, 172 | "ix": 2 173 | }, 174 | "nm": "路径 1", 175 | "mn": "ADBE Vector Shape - Group", 176 | "hd": false 177 | }, 178 | { 179 | "ind": 1, 180 | "ty": "sh", 181 | "ix": 2, 182 | "ks": { 183 | "a": 0, 184 | "k": { 185 | "i": [ 186 | [0.5, 1.6], 187 | [-1.5, 0.5], 188 | [0, 0], 189 | [-0.5, -1.5], 190 | [1.5, -0.5], 191 | [0, 0] 192 | ], 193 | "o": [ 194 | [-0.5, -1.6], 195 | [0, 0], 196 | [1.599, -0.5], 197 | [0.5, 1.6], 198 | [0, 0], 199 | [-1.6, 0.5] 200 | ], 201 | "v": [ 202 | [45.251, -14.7], 203 | [47.15, -18.5], 204 | [54.251, -20.8], 205 | [58.051, -18.9], 206 | [56.15, -15.1], 207 | [49.051, -12.8] 208 | ], 209 | "c": true 210 | }, 211 | "ix": 2 212 | }, 213 | "nm": "路径 2", 214 | "mn": "ADBE Vector Shape - Group", 215 | "hd": false 216 | }, 217 | { 218 | "ind": 2, 219 | "ty": "sh", 220 | "ix": 3, 221 | "ks": { 222 | "a": 0, 223 | "k": { 224 | "i": [ 225 | [-0.5, 1.6], 226 | [-1.6, -0.6], 227 | [0, 0], 228 | [0.599, -1.6], 229 | [1.599, 0.6], 230 | [0, 0] 231 | ], 232 | "o": [ 233 | [0.5, -1.6], 234 | [0, 0], 235 | [1.601, 0.5], 236 | [-0.5, 1.6], 237 | [0, 0], 238 | [-1.599, -0.5] 239 | ], 240 | "v": [ 241 | [45.251, 14.7], 242 | [49.051, 12.8], 243 | [56.15, 15.1], 244 | [58.051, 18.9], 245 | [54.251, 20.8], 246 | [47.15, 18.5] 247 | ], 248 | "c": true 249 | }, 250 | "ix": 2 251 | }, 252 | "nm": "路径 3", 253 | "mn": "ADBE Vector Shape - Group", 254 | "hd": false 255 | }, 256 | { 257 | "ind": 3, 258 | "ty": "sh", 259 | "ix": 4, 260 | "ks": { 261 | "a": 0, 262 | "k": { 263 | "i": [ 264 | [-1.4, 1], 265 | [-0.899, -1.4], 266 | [0, 0], 267 | [1.401, -0.9], 268 | [0.901, 1.4], 269 | [0, 0] 270 | ], 271 | "o": [ 272 | [1.3, -1], 273 | [0, 0], 274 | [1, 1.3], 275 | [-1.299, 1], 276 | [0, 0], 277 | [-1, -1.3] 278 | ], 279 | "v": [ 280 | [27.951, 38.5], 281 | [32.15, 39.2], 282 | [36.551, 45.2], 283 | [35.85, 49.4], 284 | [31.65, 48.7], 285 | [27.251, 42.7] 286 | ], 287 | "c": true 288 | }, 289 | "ix": 2 290 | }, 291 | "nm": "路径 4", 292 | "mn": "ADBE Vector Shape - Group", 293 | "hd": false 294 | }, 295 | { 296 | "ind": 4, 297 | "ty": "sh", 298 | "ix": 5, 299 | "ks": { 300 | "a": 0, 301 | "k": { 302 | "i": [ 303 | [-1.7, 0], 304 | [0, -1.6], 305 | [0, 0], 306 | [1.6, 0], 307 | [0, 1.6], 308 | [0, 0] 309 | ], 310 | "o": [ 311 | [1.699, 0], 312 | [0, 0], 313 | [0, 1.7], 314 | [-1.7, 0], 315 | [0, 0], 316 | [0, -1.7] 317 | ], 318 | "v": [ 319 | [-0.049, 47.6], 320 | [2.951, 50.6], 321 | [2.951, 58.1], 322 | [-0.049, 61.1], 323 | [-3.049, 58.1], 324 | [-3.049, 50.6] 325 | ], 326 | "c": true 327 | }, 328 | "ix": 2 329 | }, 330 | "nm": "路径 5", 331 | "mn": "ADBE Vector Shape - Group", 332 | "hd": false 333 | }, 334 | { 335 | "ind": 5, 336 | "ty": "sh", 337 | "ix": 6, 338 | "ks": { 339 | "a": 0, 340 | "k": { 341 | "i": [ 342 | [-1.3, -1], 343 | [0.901, -1.3], 344 | [0, 0], 345 | [1.299, 0.9], 346 | [-0.899, 1.3], 347 | [0, 0] 348 | ], 349 | "o": [ 350 | [1.3, 1], 351 | [0, 0], 352 | [-1, 1.3], 353 | [-1.3, -1], 354 | [0, 0], 355 | [1, -1.4] 356 | ], 357 | "v": [ 358 | [-28.049, 38.5], 359 | [-27.35, 42.7], 360 | [-31.749, 48.7], 361 | [-35.949, 49.4], 362 | [-36.65, 45.2], 363 | [-32.249, 39.2] 364 | ], 365 | "c": true 366 | }, 367 | "ix": 2 368 | }, 369 | "nm": "路径 6", 370 | "mn": "ADBE Vector Shape - Group", 371 | "hd": false 372 | }, 373 | { 374 | "ind": 6, 375 | "ty": "sh", 376 | "ix": 7, 377 | "ks": { 378 | "a": 0, 379 | "k": { 380 | "i": [ 381 | [-0.5, -1.6], 382 | [1.5, -0.5], 383 | [0, 0], 384 | [0.5, 1.5], 385 | [-1.5, 0.5], 386 | [0, 0] 387 | ], 388 | "o": [ 389 | [0.5, 1.6], 390 | [0, 0], 391 | [-1.6, 0.5], 392 | [-0.5, -1.6], 393 | [0, 0], 394 | [1.601, -0.6] 395 | ], 396 | "v": [ 397 | [-45.349, 14.7], 398 | [-47.249, 18.5], 399 | [-54.349, 20.8], 400 | [-58.15, 18.9], 401 | [-56.249, 15.1], 402 | [-49.15, 12.8] 403 | ], 404 | "c": true 405 | }, 406 | "ix": 2 407 | }, 408 | "nm": "路径 7", 409 | "mn": "ADBE Vector Shape - Group", 410 | "hd": false 411 | }, 412 | { 413 | "ind": 7, 414 | "ty": "sh", 415 | "ix": 8, 416 | "ks": { 417 | "a": 0, 418 | "k": { 419 | "i": [ 420 | [0.641, -1.597], 421 | [1.512, 0.696], 422 | [0, 0], 423 | [-0.695, 1.512], 424 | [-1.512, -0.695], 425 | [0, 0] 426 | ], 427 | "o": [ 428 | [-0.558, 1.542], 429 | [0, 0], 430 | [-1.543, -0.558], 431 | [0.558, -1.542], 432 | [0, 0], 433 | [1.543, 0.557] 434 | ], 435 | "v": [ 436 | [-44.187, -14.327], 437 | [-48.104, -12.657], 438 | [-55.041, -15.347], 439 | [-56.712, -19.264], 440 | [-52.795, -20.934], 441 | [-45.858, -18.244] 442 | ], 443 | "c": true 444 | }, 445 | "ix": 2 446 | }, 447 | "nm": "路径 8", 448 | "mn": "ADBE Vector Shape - Group", 449 | "hd": false 450 | }, 451 | { 452 | "ind": 8, 453 | "ty": "sh", 454 | "ix": 9, 455 | "ks": { 456 | "a": 0, 457 | "k": { 458 | "i": [ 459 | [1.399, -1], 460 | [0.9, 1.4], 461 | [0, 0], 462 | [-1.4, 0.9], 463 | [-0.901, -1.4], 464 | [0, 0] 465 | ], 466 | "o": [ 467 | [-1.3, 1], 468 | [0, 0], 469 | [-1, -1.3], 470 | [1.299, -1], 471 | [0, 0], 472 | [1, 1.3] 473 | ], 474 | "v": [ 475 | [-28.049, -38.5], 476 | [-32.249, -39.2], 477 | [-36.65, -45.2], 478 | [-35.949, -49.4], 479 | [-31.749, -48.7], 480 | [-27.35, -42.7] 481 | ], 482 | "c": true 483 | }, 484 | "ix": 2 485 | }, 486 | "nm": "路径 9", 487 | "mn": "ADBE Vector Shape - Group", 488 | "hd": false 489 | }, 490 | { 491 | "ind": 9, 492 | "ty": "sh", 493 | "ix": 10, 494 | "ks": { 495 | "a": 0, 496 | "k": { 497 | "i": [ 498 | [1.699, 0], 499 | [0, 1.6], 500 | [0, 0], 501 | [-1.601, 0], 502 | [0, -1.6], 503 | [0, 0] 504 | ], 505 | "o": [ 506 | [-1.7, 0], 507 | [0, 0], 508 | [0, -1.7], 509 | [1.699, 0], 510 | [0, 0], 511 | [0, 1.6] 512 | ], 513 | "v": [ 514 | [-0.049, -47.6], 515 | [-3.049, -50.6], 516 | [-3.049, -58.1], 517 | [-0.049, -61.1], 518 | [2.951, -58.1], 519 | [2.951, -50.6] 520 | ], 521 | "c": true 522 | }, 523 | "ix": 2 524 | }, 525 | "nm": "路径 10", 526 | "mn": "ADBE Vector Shape - Group", 527 | "hd": false 528 | }, 529 | { 530 | "ty": "mm", 531 | "mm": 1, 532 | "nm": "合并路径 1", 533 | "mn": "ADBE Vector Filter - Merge", 534 | "hd": false 535 | }, 536 | { 537 | "ty": "fl", 538 | "c": { 539 | "a": 0, 540 | "k": [0.929000016755, 0.663000009574, 0.081999999402, 1], 541 | "ix": 4 542 | }, 543 | "o": { "a": 0, "k": 100, "ix": 5 }, 544 | "r": 1, 545 | "bm": 0, 546 | "nm": "填充 1", 547 | "mn": "ADBE Vector Graphic - Fill", 548 | "hd": false 549 | }, 550 | { 551 | "ty": "tr", 552 | "p": { "a": 0, "k": [58.9, 61.35], "ix": 2 }, 553 | "a": { "a": 0, "k": [0, 0], "ix": 1 }, 554 | "s": { "a": 0, "k": [100, 100], "ix": 3 }, 555 | "r": { "a": 0, "k": 0, "ix": 6 }, 556 | "o": { "a": 0, "k": 100, "ix": 7 }, 557 | "sk": { "a": 0, "k": 0, "ix": 4 }, 558 | "sa": { "a": 0, "k": 0, "ix": 5 }, 559 | "nm": "变换" 560 | } 561 | ], 562 | "nm": "组 1", 563 | "np": 12, 564 | "cix": 2, 565 | "bm": 0, 566 | "ix": 1, 567 | "mn": "ADBE Vector Group", 568 | "hd": false 569 | } 570 | ], 571 | "ip": 0, 572 | "op": 601, 573 | "st": 0, 574 | "bm": 0 575 | } 576 | ], 577 | "markers": [] 578 | } 579 | -------------------------------------------------------------------------------- /assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/notJust-dev/DEVember/6c089768bddc178e892fcc41f938fec168b252f4/assets/splash.png -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | plugins: ['expo-router/babel', 'react-native-reanimated/plugin'], 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /eas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cli": { 3 | "version": ">= 5.9.1" 4 | }, 5 | "build": { 6 | "development": { 7 | "developmentClient": true, 8 | "distribution": "internal", 9 | "channel": "development", 10 | "ios": { 11 | "simulator": true 12 | } 13 | }, 14 | "preview": { 15 | "distribution": "internal", 16 | "channel": "preview" 17 | }, 18 | "production": { 19 | "channel": "production" 20 | } 21 | }, 22 | "submit": { 23 | "production": {} 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "348651167962", 4 | "project_id": "devember-c53c7", 5 | "storage_bucket": "devember-c53c7.appspot.com" 6 | }, 7 | "client": [ 8 | { 9 | "client_info": { 10 | "mobilesdk_app_id": "1:348651167962:android:89b787394e9890711885e3", 11 | "android_client_info": { 12 | "package_name": "com.vadinsavin.DEVember" 13 | } 14 | }, 15 | "oauth_client": [], 16 | "api_key": [ 17 | { 18 | "current_key": "AIzaSyBE9gxlpNiDpQ8lMN2i9aABWBv9afFXVcY" 19 | } 20 | ], 21 | "services": { 22 | "appinvite_service": { 23 | "other_platform_oauth_client": [] 24 | } 25 | } 26 | } 27 | ], 28 | "configuration_version": "1" 29 | } -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | // const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); 2 | const { getDefaultConfig } = require('expo/metro-config'); 3 | 4 | const config = getDefaultConfig(__dirname); 5 | 6 | config.resolver.assetExts.push( 7 | // Adds support for `.lottie` files 8 | 'lottie' 9 | ); 10 | 11 | module.exports = config; 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "devember", 3 | "version": "1.0.0", 4 | "main": "expo-router/entry", 5 | "scripts": { 6 | "start": "expo start --dev-client", 7 | "android": "expo run:android", 8 | "ios": "expo run:ios", 9 | "web": "expo start --web" 10 | }, 11 | "dependencies": { 12 | "@aws-amplify/react-native": "^1.0.6", 13 | "@aws-amplify/ui-react-native": "^2.0.5", 14 | "@expo-google-fonts/amatic-sc": "^0.2.3", 15 | "@expo-google-fonts/inter": "^0.2.3", 16 | "@gorhom/bottom-sheet": "^4.5.1", 17 | "@react-native-async-storage/async-storage": "1.18.2", 18 | "@react-native-community/netinfo": "^11.2.0", 19 | "@react-native/metro-config": "^0.73.2", 20 | "aws-amplify": "^6.0.6", 21 | "dayjs": "^1.11.10", 22 | "expo": "~49.0.15", 23 | "expo-av": "~13.4.1", 24 | "expo-blur": "~12.4.1", 25 | "expo-constants": "~14.4.2", 26 | "expo-dev-client": "~2.4.12", 27 | "expo-device": "~5.4.0", 28 | "expo-font": "~11.4.0", 29 | "expo-linear-gradient": "~12.3.0", 30 | "expo-linking": "~5.0.2", 31 | "expo-local-authentication": "~13.4.1", 32 | "expo-location": "~16.1.0", 33 | "expo-notifications": "~0.20.1", 34 | "expo-router": "^2.0.0", 35 | "expo-splash-screen": "~0.20.5", 36 | "expo-status-bar": "~1.6.0", 37 | "expo-updates": "~0.18.17", 38 | "lottie-react-native": "5.1.6", 39 | "react": "18.2.0", 40 | "react-dom": "18.2.0", 41 | "react-native": "0.72.6", 42 | "react-native-gesture-handler": "~2.12.0", 43 | "react-native-get-random-values": "^1.10.0", 44 | "react-native-maps": "1.7.1", 45 | "react-native-markdown-display": "^7.0.0-alpha.2", 46 | "react-native-purchases": "^7.5.1", 47 | "react-native-reanimated": "~3.3.0", 48 | "react-native-safe-area-context": "4.6.3", 49 | "react-native-screens": "~3.22.0", 50 | "react-native-url-polyfill": "^2.0.0", 51 | "react-native-vision-camera": "^3.6.14", 52 | "react-native-web": "~0.19.6", 53 | "uuid": "^9.0.1", 54 | "vexo-analytics": "^1.3.12", 55 | "zustand": "^4.4.7" 56 | }, 57 | "devDependencies": { 58 | "@babel/core": "^7.20.0", 59 | "@types/react": "~18.2.14", 60 | "typescript": "^5.1.3" 61 | }, 62 | "private": true 63 | } 64 | -------------------------------------------------------------------------------- /src/amplifyconfiguration.json: -------------------------------------------------------------------------------- 1 | { 2 | "aws_project_region": "us-east-1", 3 | "aws_cognito_identity_pool_id": "us-east-1:65cd4264-c477-488a-ba15-f866af306690", 4 | "aws_cognito_region": "us-east-1", 5 | "aws_user_pools_id": "us-east-1_ZYdrFTIm6", 6 | "aws_user_pools_web_client_id": "oo8r9kc105f82a7utmuqevg3v", 7 | "oauth": {}, 8 | "aws_cognito_username_attributes": [ 9 | "EMAIL" 10 | ], 11 | "aws_cognito_social_providers": [], 12 | "aws_cognito_signup_attributes": [ 13 | "EMAIL" 14 | ], 15 | "aws_cognito_mfa_configuration": "OFF", 16 | "aws_cognito_mfa_types": [ 17 | "SMS" 18 | ], 19 | "aws_cognito_password_protection_settings": { 20 | "passwordPolicyMinLength": 8, 21 | "passwordPolicyCharacters": [] 22 | }, 23 | "aws_cognito_verification_mechanisms": [ 24 | "EMAIL" 25 | ] 26 | } -------------------------------------------------------------------------------- /src/app/(days)/day1/index.tsx: -------------------------------------------------------------------------------- 1 | import { View, Text } from 'react-native'; 2 | import React from 'react'; 3 | import { Stack } from 'expo-router'; 4 | 5 | const DayDetailsScreen = () => { 6 | return ( 7 | 8 | 9 | 10 | 11 | Day Details Screen 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default DayDetailsScreen; 18 | -------------------------------------------------------------------------------- /src/app/(days)/day10/index.tsx: -------------------------------------------------------------------------------- 1 | import { View, Text, Button } from 'react-native'; 2 | import React from 'react'; 3 | import { Link, Stack } from 'expo-router'; 4 | import MarkdownDisplay from '@/components/day3/MarkdownDisplay'; 5 | import { SafeAreaView } from 'react-native-safe-area-context'; 6 | 7 | const description = ` 8 | # Biometrics 9 | Use FaceID and Fingerprint to unlock the next screens`; 10 | 11 | const DayDetailsScreen = () => { 12 | return ( 13 | 14 | 15 | 16 | {description} 17 | 18 | 19 |