317 Commits

Author SHA1 Message Date
Nicholas Pease 4ea77d8941 Update README.md with Demo Login (#105) 2024-06-15 21:39:10 -04:00
Nicholas Pease 33f42a703a Update README.md with Demo Login 2024-05-24 08:20:21 -04:00
ClarkLach 0db13e3178 Added Deliverables 4+5, Final Presentation Slides (#104) 2024-04-26 00:09:23 -04:00
Nicholas Pease aeb28b0623 Added Firebase Security Warning 2024-04-26 00:08:54 -04:00
ClarkLach 0ac733fa63 Add files via upload 2024-04-25 15:46:44 -04:00
ClarkLach e7f0855578 Delete deliverables/deliverable_5/filler.txt 2024-04-25 15:46:30 -04:00
ClarkLach 0f9a74826a Add files via upload 2024-04-25 15:46:14 -04:00
ClarkLach 67b8725f70 Create filler.txt 2024-04-25 15:45:26 -04:00
ClarkLach b9e244cf03 Delete deliverables/deliverable_4/filler.txt 2024-04-25 15:45:14 -04:00
ClarkLach 4a5078cab3 Add files via upload 2024-04-25 15:44:57 -04:00
ClarkLach 29de0c85fe Create filler.txt 2024-04-25 15:44:43 -04:00
Nicholas Pease 77c2bf9620 Nearby Room Fix / ChatMaps URL Formatting Fix (#103) 2024-04-24 09:27:28 -04:00
npease 91735beb88 Remove hanging console.log / fix linting issues 2024-04-24 01:35:23 -04:00
npease f02e74bc3a Bugfix - Fix nearby rooms on map 2024-04-24 01:25:40 -04:00
npease c3361e3141 Bugfix - RMF Chatma.ps URL Fix 2024-04-24 00:59:04 -04:00
Nicholas Pease 0cf510e95c Various Bug Fixes and Additions (#102) 2024-04-23 19:48:43 -04:00
npease 754442adfa Bugfix - Key on new Rich chatma.ps messages 2024-04-23 19:39:20 -04:00
npease 833361255b Feature - Add Rich Room URL's 2024-04-23 19:37:24 -04:00
npease 7a231c4e39 Bugfix - Cleanup Silent React Errors 2024-04-23 19:07:10 -04:00
npease 08c88fb59c Linting - Linting Complete 2024-04-23 17:52:21 -04:00
npease 4b5454ddc2 Easter Egg - Add /peter command and framework for future commands / easter eggs / Additional easter eggs (including /snoop) 2024-04-23 17:41:59 -04:00
npease 623de2877e Bugfix - URL / Image Detection and TTS Slur Detection / Blocking 2024-04-23 17:33:31 -04:00
npease ce6b23ec98 BugFix - Profile Data Updates / Status Fix 2024-04-23 14:01:24 -04:00
Nicholas Pease a83f219c02 Various Interactivity Bug Fixes (#101) 2024-04-23 11:05:17 -04:00
npease 97325623fe Bug Fix - Remove unused Jsdoc dependency (Breaks Deployment Actions) 2024-04-23 00:53:06 -04:00
npease 19466dd98f Bug Fix - Fix DM Online Not Removing On Close, Fix Onboarded Users Unable to Selectively Edit Profile Fields, Fix DM Online User Updates 2024-04-23 00:46:29 -04:00
npease 577dddd785 Bug Fix - Readd Updating Friend / Friend Requests 2024-04-23 00:17:37 -04:00
npease a58579e753 Bug Fix - Room Live Updates, Initial Account PFP, Initial Account Online Status 2024-04-23 00:07:33 -04:00
npease f5f4706123 Bug Fix - Remove Persistent Online from Added Members in Rooms 2024-04-22 23:38:05 -04:00
Nicholas Pease 0886b85847 TTS Fix (#100) 2024-04-22 20:37:10 -04:00
npease 30a40bf6b1 TTS Fix 2024-04-22 20:35:37 -04:00
Nicholas Pease ae927dea0d Add /tts (#99) 2024-04-22 20:26:47 -04:00
npease 69d2b98d50 Add /tts 2024-04-22 00:51:56 -04:00
Nicholas Pease ceaabd3514 Fixes Across the Board (#98) 2024-04-21 22:50:29 -04:00
npease 94513bb0d9 Fixes Across the Board 2024-04-21 22:49:23 -04:00
Nicholas Pease cf2fc469fb Fix Broken Friends on Map (#97) 2024-04-21 21:32:51 -04:00
npease 49bf406795 Fix Broken Friends on Map 2024-04-21 21:31:36 -04:00
Nicholas Pease d75496adcc Add Unit Tests (#95) 2024-04-21 21:15:23 -04:00
Nicholas Pease acfae6b898 Fix Markers on Empty Profiles (#96) 2024-04-21 20:59:48 -04:00
npease 373ff372cb Fix Markers on Empty Profiles 2024-04-21 20:58:08 -04:00
npease 6c54d38efc Add Unit Tests 2024-04-21 16:38:18 -04:00
Nicholas Pease df60173b49 Firebase Optimization (#93) 2024-04-21 13:58:49 -04:00
Nicholas Pease 3be86e6196 Proper Optimization for Firebase (#94) 2024-04-21 02:05:53 -04:00
npease 3d85f9770e Proper Optimization 2024-04-21 02:04:56 -04:00
npease 3af8e3bb6d Firebase Optimization 2024-04-20 23:42:44 -04:00
Nicholas Pease 6ad0f1ad55 Bugfix: My Rooms Loading (#92) 2024-04-19 17:34:59 -04:00
Nicholas Pease 6fb88acf44 Merge branch 'main' into npease-bugfix-room-load 2024-04-19 11:34:33 -04:00
npease d98de59fcf Bugfix: My Rooms Loading 2024-04-19 11:33:57 -04:00
Nicholas Pease ca691d2203 DM Security Fix (#91) 2024-04-19 11:29:21 -04:00
Nicholas Pease 31842373b8 Multiple Mapping Improvements (#90) 2024-04-19 11:25:32 -04:00
npease fcdc95505e Straggler 2024-04-19 11:24:34 -04:00
Nicholas Pease af55b7e58d Merge branch 'main' into npease-mapping-improvements 2024-04-19 11:21:19 -04:00
npease 094cdab65e DM Security Fix 2024-04-19 11:18:46 -04:00
Nicholas Pease 059a90808a Add Search to Nearby Tab (#89) 2024-04-19 11:13:03 -04:00
Nicholas Pease ea6801fbb5 Fix Image Detection Async (#88) 2024-04-19 11:12:43 -04:00
npease 925c6f28fe Map Improvements 2024-04-19 11:09:12 -04:00
npease 75a3919eb2 Added Friends, My Rooms, Refactored Nearby Markers Functions 2024-04-19 10:01:04 -04:00
npease 803432db8e Linting Fixes 2024-04-19 09:13:41 -04:00
npease b8a732eea5 Add Nearby Rooms Search 2024-04-19 09:08:48 -04:00
npease 294dd3a6b0 Image Fix Async 2024-04-19 02:32:18 -04:00
Nicholas Pease de0c9e9785 Circle Icon Fix (#87) 2024-04-19 02:09:09 -04:00
npease 45f9ec19d1 Circle Icon Fix 2024-04-19 02:08:03 -04:00
Nicholas Pease f73cd7f07a Better Picture Detection / Handling (#86) 2024-04-19 02:01:55 -04:00
Nicholas Pease fb19f53d63 Fix Delete (#85) 2024-04-19 02:01:42 -04:00
npease f1e23ac056 Better Picture Detection / Handling 2024-04-19 01:59:43 -04:00
npease 50308ce43c Fix Delete 2024-04-19 00:09:51 -04:00
Nicholas Pease d7d47bae9e Fix disappearing rooms on status visibility change (#84) 2024-04-18 23:49:26 -04:00
npease e203a87a77 Fix disappearing rooms on status visibility change 2024-04-18 23:29:47 -04:00
npease 5f089341be Clear Error From Console 2024-04-18 23:24:57 -04:00
Nicholas Pease f2c9d55a20 General Bug Fixes (#83) 2024-04-18 23:17:04 -04:00
npease 04c0cb4cff Deleted Key Variable 2024-04-18 23:15:26 -04:00
npease 32dda6fe8d Cleanup Console.Logs 2024-04-18 23:14:33 -04:00
Nicholas Pease da7320255e Fix Message Parsing Issues (#82) 2024-04-18 23:12:31 -04:00
npease e8fad393f7 Fix Message Parsing Issues 2024-04-18 23:11:38 -04:00
Nicholas Pease 02a9eeaa36 Add User Message Deletion (#78) 2024-04-18 22:39:55 -04:00
Nicholas Pease c4374da5ba Merge branch 'main' into npease-chat-message-deletion 2024-04-18 22:39:14 -04:00
Nicholas Pease 2a33838b93 Fix Profile Picture Display (#81) 2024-04-18 14:41:42 -04:00
Nicholas Pease 527dcd8660 Properly Integrate Images, RMF and Profane filters (#80) 2024-04-18 14:40:31 -04:00
npease d1a9116b34 Fix Profile Picture Scaling on Different Screen Sizes 2024-04-18 13:01:41 -04:00
npease 9ee81aa487 Profile Picture Sizing Corrected on Sidebar 2024-04-18 12:59:12 -04:00
npease de99e26ca2 Properly Integrate Images, RMF and Profane filters 2024-04-18 12:47:02 -04:00
Nicholas Pease 2822152799 Add Image Detection to RMF (Rich Message Formatting) (#79) 2024-04-18 01:19:47 -04:00
Nicholas Pease baa754eeb8 Add Profanity Filter (#77) 2024-04-18 01:18:36 -04:00
Nicholas Pease fe90a39983 Add Global User Online / Offline (#76) 2024-04-18 01:18:16 -04:00
npease 5eb2002d8e Install in proper directory 2024-04-18 00:07:29 -04:00
npease 3446ea47b4 Add dependency to package.json 2024-04-18 00:05:43 -04:00
npease 32a5f5b057 Add Image Detection to RMF (Rich Message Formatting) 2024-04-18 00:01:17 -04:00
npease 8f00bade79 Add message deletion for users messages only 2024-04-17 23:24:08 -04:00
npease c3d55c94d1 Add Profanity Filter 2024-04-17 22:46:55 -04:00
npease 7c00b49870 Simple Fix for Blank Messages 2024-04-17 22:27:25 -04:00
npease 5b161ad232 Add Profile Menu Option to Appear Offline 2024-04-17 22:18:20 -04:00
npease 7954432add Add Global User Online Status 2024-04-17 22:06:24 -04:00
Sgoodridge96 76f18d2b15 Sgoodridge (#75) 2024-04-11 01:46:29 -04:00
Stephen a695a47d8b Merge branch 'main' into sgoodridge 2024-04-11 01:32:03 -04:00
Stephen 401cc4670c Fix profile pic bugs 2024-04-11 01:29:12 -04:00
Nicholas Pease 0668350eed Add Privacy Policy (For Google App Store) (#74) 2024-04-10 21:33:53 -04:00
npease ad39b54f1d Add Deletion Info Page 2024-04-10 14:14:20 -04:00
npease 398725e7b7 Add Privacy Police (For Google App Store) 2024-04-10 14:07:31 -04:00
ClarkLach f726d6d40f Map Marker Tweaks (#73) 2024-04-09 21:47:03 -04:00
ClarkLach 1e3c0ce930 Custom Icons POC
Will need to pick out some good icons/styles. Overlay offset needs some work still.
2024-04-09 20:33:49 -04:00
ClarkLach 0eb766b2a0 Hover effect for map rooms
Hopefully nothing is broken, some formatting still needed
2024-04-09 15:46:19 -04:00
Nicholas Pease 6c9f4af2dd Various Bug Fixes (#72) 2024-04-08 10:26:52 -04:00
npease ed6c1b427e Bug Fix - JSDoc Build Error 2024-04-08 00:13:14 -04:00
npease bc25b0e694 Bug Fix - Unauth Redirect 2024-04-08 00:08:21 -04:00
npease 3e354800dd Bug Fix - DM List 2024-04-07 23:59:29 -04:00
npease c3c76b66c9 Bug Fix - Restore Undid Change 2024-04-07 23:45:12 -04:00
npease ce5add2879 Bug Fix - Build Error 2024-04-07 23:33:27 -04:00
npease 5629dc8836 Bug Fix - Profile Editing 2024-04-07 23:31:18 -04:00
npease 0d4787ccfb Bug Fix - Profile Loading 2024-04-07 22:37:35 -04:00
Nicholas Pease e9948c1f5c Fixed DM's (#71) 2024-04-07 13:03:53 -04:00
npease 568628f0a2 Fixed DM's 2024-04-07 03:56:14 -04:00
Nicholas Pease abf46c6885 Add to both (#70) 2024-04-07 03:27:37 -04:00
npease 01d8598f59 Add to both 2024-04-07 03:26:10 -04:00
Nicholas Pease 1095b781cd Hotfix for Profiles (#69) 2024-04-07 03:19:14 -04:00
npease 1569d3c7ce Hotfix for Profiles 2024-04-07 03:18:17 -04:00
Nicholas Pease 652b35f5bd Add Friends / DM's V1 (#68) 2024-04-07 03:08:48 -04:00
ClarkLach 57a8af7ef8 Added user list on hover (#67) 2024-04-07 03:08:11 -04:00
npease e8be631182 Fixes for Login Bug 2024-04-07 03:07:22 -04:00
npease 1dda82790c DM's Working 2024-04-07 03:05:16 -04:00
ClarkLach c47ea53b50 Added user list on hover
List all users of room (on sidebar) when hovering. Could use a little formatting more probably.
2024-04-07 02:20:01 -04:00
npease d4d994fe26 Friending V1 2024-04-07 00:38:07 -04:00
Nicholas Pease 2dc2f380ff Add Ionic Capacitor Support (Cross Platform Native) (#62) 2024-04-06 20:51:29 -04:00
Nicholas Pease 2604fc2034 Profile Visual Fix (#65) 2024-04-06 20:51:14 -04:00
Nicholas Pease 7db4b2a2ee Login / Register Verification (#66) 2024-04-06 20:46:42 -04:00
Nicholas Pease 3ec8263d15 Add Online / Total to Room List (#64) 2024-04-06 20:44:58 -04:00
npease d0c14cf1ab Login / Register Verification 2024-04-06 17:55:11 -04:00
npease a078c9adec Profile Visual Fix 2024-04-06 17:14:08 -04:00
npease 3caa4dcde7 Remove console logs 2024-04-06 17:00:23 -04:00
npease 860c6d1075 Add Online / Total to Room List 2024-04-06 16:57:16 -04:00
ClarkLach cccfd98736 Map Markers Fixed (#63) 2024-04-06 01:48:47 -04:00
Nicholas Pease c37d521d0e Merge branch 'main' into clarkl-apr5 2024-04-06 01:47:44 -04:00
ClarkLach 1de58de8de Room/User Links on Map 2024-04-06 01:46:32 -04:00
ClarkLach fc1adb5662 Main Page Markers are back.
Still a bit to do here.
2024-04-06 01:32:11 -04:00
Nicholas Pease b5e36872b6 Merge branch 'main' into npease-capacitor-v1 2024-04-06 01:07:26 -04:00
npease 1c4183dd85 Final touches for V1 2024-04-06 01:06:17 -04:00
Nicholas Pease 535302c893 Add URL Detection (#60) 2024-04-06 01:05:45 -04:00
Nicholas Pease 3a28cc392a Fix Bad Merge 2024-04-06 01:04:50 -04:00
npease 63321e0550 Restore unauth redirects 2024-04-06 00:28:43 -04:00
npease 4789da2c43 Init Android 2024-04-06 00:24:43 -04:00
ClarkLach 1498e2615c Actually Fixed next/babel error 2024-04-05 22:59:44 -04:00
ClarkLach 3aad970fd6 next/babel error fix 2024-04-05 22:55:00 -04:00
Nicholas Pease c5821737b2 Merge branch 'main' into npease-rich-messages-v1 2024-04-05 22:35:28 -04:00
Nicholas Pease 75a79711aa Update Chat/App/Profile Pages to be Mobile Friendly (#61) 2024-04-05 22:33:08 -04:00
npease f4447fd2dc Fixes to Send Box in Chat Messages 2024-04-05 21:19:09 -04:00
npease 6be9999d44 WIP 2024-04-05 20:31:35 -04:00
npease 5dd4bffdc5 Initial Setup 2024-04-05 19:38:10 -04:00
npease 14dfdf8735 Fix for Sidebar Width 2024-04-05 22:20:43 +00:00
npease 19eed3810d First Param Fix 2024-04-04 20:53:50 -04:00
npease d5e0f3ca79 Make User Profile Static 2024-04-04 20:51:13 -04:00
npease b868d67cd1 Mobile Ready Chat Page 2024-04-05 00:18:47 +00:00
npease 098a0f469d App Page Mobile Ready 2024-04-04 23:45:05 +00:00
npease 718c489042 Profile Page Mobile Ready 2024-04-04 21:56:23 +00:00
npease 94c8b900a9 Add URL Detection 2024-04-04 21:32:24 +00:00
Nicholas Pease 830d7f75e1 Made Recurse 2024-04-04 00:24:13 -04:00
Nicholas Pease 3ec8386a04 Restore Rooms User Leave/Enter Status (#59) 2024-04-04 00:16:34 -04:00
npease a1e1f28137 Restore Rooms User Leave/Enter Status 2024-04-04 04:16:08 +00:00
Nicholas Pease f6873efcdd Delete vercel.json 2024-04-03 23:49:20 -04:00
Nicholas Pease c4be27dada Move vercel.json 2024-04-03 23:48:58 -04:00
Nicholas Pease b319c0e6e4 Create vercel.json 2024-04-03 23:40:27 -04:00
Nicholas Pease c63383ba89 Update Config to work with JsDoc 2024-04-03 23:29:14 -04:00
Nicholas Pease df62f8f846 Refactor / Documentation for All Functions / Components (#58) 2024-04-03 22:53:20 -04:00
Nicholas Pease 17d895cab0 Add Notifications V1 (#57) 2024-04-03 22:52:26 -04:00
Nicholas Pease 86cfdfb875 Convert To Link for Preload Speed Advantage (#55) 2024-04-03 22:52:01 -04:00
npease 370c7c39f5 Add jsdoc workflow 2024-04-04 02:03:32 +00:00
npease 5dd891c5b2 JS Docs for all Files 2024-04-04 01:39:08 +00:00
npease 7bf163d77c Move Profile Panel to Profile Component Directory 2024-04-03 23:36:11 +00:00
npease 9feead28cd Slight Change 2024-04-03 23:27:30 +00:00
npease 323b7b555a Notification Functions Added 2024-04-03 23:25:47 +00:00
npease d09a527c9d Change homepage coords to new Geolocated import 2024-04-03 22:21:29 +00:00
Nicholas Pease 25a112bc3f Dev Merge (#56) 2024-04-03 18:10:27 -04:00
npease b7ec08f5ef Final Touches 2024-04-03 22:08:25 +00:00
npease 8bca33a039 Good to Release 2024-04-03 22:04:19 +00:00
npease 6179f8d4c2 Initial 2024-04-03 21:52:55 +00:00
npease e08f4591c6 Rename / Transition to Headless UI Tab Control 2024-04-03 01:18:44 +00:00
Nicholas Pease bc04d35909 Refactor / Lag Fix (#54) 2024-03-31 13:46:06 -04:00
npease 5d8a29d19c Final Touches 2024-03-31 05:22:10 +00:00
npease b52c17162d Most functions working 2024-03-31 05:08:52 +00:00
npease 3a555a690c In Progress Home 2024-03-31 03:01:19 +00:00
npease d81ba003e0 Split chat into page 2024-03-31 02:28:57 +00:00
Nicholas Pease c4292fdd33 Undo Bad Merge (#53) 2024-03-30 20:29:11 -04:00
Nicholas Pease 13d04ad364 Undo Bad Merge 2024-03-30 20:28:11 -04:00
ClarkLach 525fe38b73 Restructing Changes + Bugfixes (#51) 2024-03-30 20:26:15 -04:00
ClarkLach e1e9fb877a Added Deliverable 3 (#50) 2024-03-30 20:26:01 -04:00
ClarkLach b826f1f6a4 Commenting
A lil more descriptive, changed a function name as well
2024-03-30 20:24:40 -04:00
ClarkLach e2a8c75d46 Profile Edit into Component
Continuing to break up functionality into separate files
2024-03-30 02:19:49 -04:00
ClarkLach a4fc9bdce0 More Restructure, Formatting all file contents
Breaking stuff into components piece by piece. Also used Prettier on all files in one commit. (Should stick to a consistent, readable format !!)
2024-03-30 01:30:36 -04:00
ClarkLach 1a6700a983 Fixed Broken Profile Page
Accidentally broke profile page (since I'm moving the map functions around)
2024-03-30 01:07:40 -04:00
ClarkLach 2571b8cc73 CSS Fixes
Got rid of all the errors of duplicate colors/sizing.
2024-03-30 00:55:11 -04:00
ClarkLach 88b7202069 Links for room markers
Room Marker links to room, deleted unneeded files, beginning work on better structuring
2024-03-30 00:50:38 -04:00
ClarkLach 456c8bc1af Fixed Profile Name and updated README 2024-03-29 11:25:58 -04:00
ClarkLach c36b33402b Added Proposal Presentation 2024-03-28 14:08:49 -04:00
ClarkLach abdbe69fd9 Deleted filler file 2024-03-28 14:08:18 -04:00
ClarkLach 81da8f5b2d Added Deliverable 3 files 2024-03-28 14:07:53 -04:00
ClarkLach b05bebfd07 Create deliverable_3 folder 2024-03-28 14:06:17 -04:00
Nicholas Pease 947041b62b User Profiles V1 (#49) 2024-03-28 14:02:00 -04:00
npease e50062f615 Fix for display sizing 2024-03-28 02:49:37 +00:00
npease ced20c16c5 Final Fixes 2024-03-27 18:24:55 +00:00
npease a2ae2b2bea Finishing up first profile version 2024-03-27 16:53:37 +00:00
npease f82b04d36c Custom Profile Picture Upload Complete 2024-03-27 04:36:19 +00:00
npease fdb22a5307 Progress Commit 2024-03-27 04:11:37 +00:00
Nicholas Pease f92bf2510a Merge Latest to Dev (#46) 2024-03-24 01:26:48 -04:00
npease 965db39ad0 Profiles IP, Page Created 2024-03-24 05:25:07 +00:00
Nicholas Pease 584510d0f3 Refactor Authentication Flow (#44) 2024-03-23 16:54:19 -04:00
Nicholas Pease 981d17166e Dev Branch Update (#45) 2024-03-22 16:12:23 -04:00
npease 12cfc6f6a0 Remove Dependency 2024-03-22 20:05:11 +00:00
npease 2ec3b93190 Polished Off, Bloatware Reduced 2024-03-22 06:24:12 +00:00
npease 961e2b4587 Polishing Touches, Remove of Unnecessary Files, Register -> Onboard 2024-03-22 05:42:35 +00:00
npease eaadade0ed Mostly There, Fine Tuning Required 2024-03-22 04:59:40 +00:00
npease 564524772e Login Refactored, TODO: Delete old API and other references 2024-03-21 22:55:41 +00:00
npease b2c21d0782 Finalize THIS refactor 2024-03-21 22:28:27 +00:00
npease fa29041489 Cleanup 2024-03-21 18:28:57 +00:00
npease 296f21a082 Initial Refactor 2024-03-21 18:22:43 +00:00
ClarkLach ed3449a1f7 Added Username Colors in Chats (#41) 2024-03-19 14:25:16 -04:00
ClarkLach 9f84ee233d Merge branch 'main' into clarkl-mar14 2024-03-19 14:23:57 -04:00
Nicholas Pease 1396d03b76 Fix Borked Nearby Update (#40) 2024-03-19 14:20:00 -04:00
Nicholas Pease ba0575f315 Merge branch 'main' into npease-hotfix-39 2024-03-14 18:39:09 -04:00
ClarkLach 644206635f Added username colors in chats
Ideally this will be customizable at some point
2024-03-14 18:31:05 -04:00
ClarkLach 2b6bc641d4 Update .gitignore
DS_store activity
2024-03-14 17:13:16 -04:00
ClarkLach 0962df2187 Uploaded Deliverables and Deleted Old Files (#35) 2024-03-14 16:54:32 -04:00
npease 7212a532f6 Fix Borked Nearby Update 2024-03-12 04:28:46 +00:00
Nicholas Pease 85cd7c20f4 Add Nearby Room Counter for Unauthenticated / New Users (#38) 2024-03-12 00:22:01 -04:00
Nicholas Pease 844bb14040 Add Online, Offline, Saving Capabilities (#36) 2024-03-12 00:21:36 -04:00
Nicholas Pease 2e0ac0ba0f Merge branch 'npease-profiles-v1' into npease-chatrooms-profile 2024-03-12 00:19:43 -04:00
npease ea3647ecd3 Rooms appear on big map 2024-03-10 20:25:20 +00:00
npease 2796172d30 Fix Maps for Chatroom 2024-03-10 20:04:10 +00:00
npease 0c8ca18326 Add counter for unauthenticated users on homepage to show rooms nearby 2024-03-10 17:39:08 +00:00
npease b1009b186e Fix Added Members, onValue for Room List, Nearby 2024-03-10 16:43:08 +00:00
Nicholas Pease 72ae128975 Merge branch 'main' into npease-chatrooms-profile 2024-03-10 01:29:55 -05:00
npease 9802ea8096 Final myRooms Fix 2024-03-10 06:27:31 +00:00
npease aa49341937 myRooms Working 2024-03-10 06:10:39 +00:00
npease 29d6833e42 Initial Working Online/Offline Members 2024-03-10 04:22:42 +00:00
npease d26e7d4290 WIP 2024-03-06 04:26:36 +00:00
npease 1f22895904 Prelim Chat Sidebar Data Working 2024-03-05 06:01:28 +00:00
npease 319f066edf Main App Page Refactor, Commenting, Chat Room Sidebar Work 2024-03-05 05:38:23 +00:00
npease c77f16d3fc UI Worked On, Need to Pass Chatroom Path Data to sidebar somehow 2024-03-04 05:30:42 +00:00
ClarkLach c8d7e40203 Update README.md
fixed missing command
2024-03-03 23:56:01 -05:00
ClarkLach e1572cd84a Delete .github/workflows directory 2024-03-03 23:55:09 -05:00
ClarkLach 1e5f462abd Delete deliverables/deliverable_2/filler.txt 2024-03-03 23:53:40 -05:00
ClarkLach 973096d480 Delete deliverables/deliverable_1/filler.txt 2024-03-03 23:53:28 -05:00
ClarkLach 5aa1c888e1 Delete deliverables/deliverable_0/filler.txt 2024-03-03 23:53:15 -05:00
ClarkLach 594c09ba65 Delete deliverables/filler.txt 2024-03-03 23:53:04 -05:00
ClarkLach a883e3112e Uploaded deliverable 1 files 2024-03-03 23:52:29 -05:00
ClarkLach b87c6ee600 Uploaded Deliverable 0 Files 2024-03-03 23:50:40 -05:00
ClarkLach 94b8591643 Create deliverable 0 2024-03-03 23:50:11 -05:00
ClarkLach b7a30c3d6d Create deliverable 1 2024-03-03 23:49:56 -05:00
ClarkLach daa9de4142 Uploaded Deliverable 2 files 2024-03-03 23:48:15 -05:00
ClarkLach 08b57dc2b2 Create deliverable 2 2024-03-03 23:47:42 -05:00
ClarkLach e179e8cdef Create deliverables directory 2024-03-03 23:46:58 -05:00
ClarkLach 57e61e362a Delete backend directory 2024-03-03 23:45:55 -05:00
npease 0042244b80 Prelim Profile 2024-03-03 03:17:53 +00:00
Nicholas Pease e8dfc7bf88 Fix Homepage Buttons Loading Slow (#31) 2024-03-02 21:23:07 -05:00
Nicholas Pease 72bcccfe2f Add Preliminary Chatroom Support (#32)
Add Preliminary Chatroom Support
2024-03-02 21:22:53 -05:00
Sgoodridge96 2c457ab531 Fixed bugs from last PR: Updated register page for password confirmation (#30) 2024-02-27 15:27:54 -05:00
Nicholas Pease 1120f5eb6e Merge branch 'main' into sgoodridge-edit1 2024-02-26 21:12:43 -05:00
Nicholas Pease f16b77c94b Merge branch 'main' into npease-homepage-fix 2024-02-26 18:34:29 -05:00
Nicholas Pease 62a813d0ad Add Username to Onboarding, Fix Onboarding (#28) 2024-02-26 14:59:27 -05:00
Stephen 151de4ebfd updated register page for password confirmation: Fixed bugs with last PR 2024-02-26 14:22:04 -05:00
Sgoodridge96 199c283b0e Update page.js
Updated errors from pull request:
Added a password confirmation to register page
2024-02-26 13:37:34 -05:00
npease 60bdf36274 Chatrooms: Nearby Lookup Working 2024-02-26 05:40:11 +00:00
npease a7eb9b942b Minimal Functional Chatrooms 2024-02-25 23:46:41 +00:00
npease 7cd1e9b5da WIP: Message Fetch Works 2024-02-25 08:38:40 +00:00
npease afd5dbaa9f Restructure App, Created Chat UI, Ready for Firebase Integration / Backend 2024-02-25 03:19:12 +00:00
npease eeb6b856e6 UI Changes, Prepare for Chatrooms 2024-02-24 06:35:23 +00:00
npease 9ee8bf3376 Add username, fix onboarding 2024-02-24 02:15:53 +00:00
npease 848d588bf4 Fix Homepage Buttons Loading Slow 2024-02-23 20:02:08 +00:00
Stephen 7ca4b62848 Added password confirmation to register page 2024-02-23 14:05:14 -05:00
Stephen 8cd5fd8783 Added password confimation during registration 2024-02-23 14:02:34 -05:00
Stephen afd72ec72b Added password confirmation on register page 2024-02-23 13:52:38 -05:00
Nicholas Pease 0895e93f6c Optimize Authentication Flow, Better Visual Feedback (#25) 2024-02-23 12:09:52 -05:00
Stephen 67ec566728 Added re enter password to register page 2024-02-23 11:58:09 -05:00
npease 8737d10a1e If user is authenticated, redirect to app from /login and /register pages 2024-02-23 04:37:03 +00:00
npease d9bca7f1ff Loading Icon on Login/Register button press 2024-02-23 04:22:36 +00:00
npease 4b9b46f10d Improved Onboarding User Verification, Removed Login/Register Buttons on Homepage for Logged In Users 2024-02-23 04:09:45 +00:00
npease bafcd88fa1 Optimize User Info Storage & Reduce API Calls to DB 2024-02-23 03:44:05 +00:00
Nicholas Pease ac7317a0b7 Validation on Register / Remove Download Button From Homepage (#23) 2024-02-22 14:08:14 -05:00
Nicholas Pease 034b217916 Update README.md with new URL (#21)
Update README.md with new URL
2024-02-22 14:06:53 -05:00
Nicholas Pease ef3f7fa174 Login: Invalid Username / Password Prompts User (#22) 2024-02-22 14:06:31 -05:00
npease 17d2ce436a Delete Download Button 2024-02-22 19:00:47 +00:00
npease 6dbc0a2e8e Register Page Validation 2024-02-22 18:59:57 +00:00
npease 43e9045b0a Final CSS Changes 2024-02-22 18:24:25 +00:00
npease 5ca9c4222c Slight CSS changes to keep login page from scrolling 2024-02-22 18:22:55 +00:00
npease 5e8a5c89b3 Add red border on error to login 2024-02-22 18:18:59 +00:00
Nicholas Pease dc5469fc70 Update README.md with even newer URL 2024-02-22 12:09:38 -05:00
npease ac19919c51 Login: Invalid Username / Password Prompts User 2024-02-22 06:17:53 +00:00
Sgoodridge96 7d2b653953 Change button Colors (#20) 2024-02-21 09:29:54 -05:00
Nicholas Pease 6dea6cc168 Update README.md with new URL 2024-02-21 09:14:05 -05:00
Nicholas Pease 75e3476d48 Load default map then center on users computed location (#16) 2024-02-21 09:08:53 -05:00
Stephen c73f85a411 Merge branch 'main' of https://github.com/ChatMaps/ChatMaps into sgoodridge 2024-02-20 23:33:18 -05:00
Nicholas Pease 5aba1549d4 Deployment Fixes (#19) 2024-02-20 22:56:49 -05:00
npease 3f68e43efd Merge branch 'main' of https://github.com/LAX18/ChatMaps 2024-02-20 22:55:22 -05:00
npease b24a2b5254 Remove Logging 2024-02-20 22:55:20 -05:00
Nicholas Pease b38f12a6ab Merge branch 'ChatMaps:main' into main 2024-02-20 22:54:51 -05:00
npease b07a333459 Cookie Deployment Fix 2024-02-20 22:51:09 -05:00
Stephen 13e5f319c7 changes to buttons 2024-02-20 22:17:35 -05:00
npease 4391a072cc Different way of setting cookies 2024-02-20 17:33:06 -05:00
npease 66c9de922d New way of setting cookies 2024-02-20 17:27:01 -05:00
npease 245ae616b1 Testing fixes with cookie on middleware 2024-02-20 17:05:01 -05:00
Nicholas Pease 3afbe17a21 Fix Deployment Authentication Problems (#18) 2024-02-20 16:49:23 -05:00
Nicholas Pease 8d3283ef04 Merge branch 'ChatMaps:main' into main 2024-02-20 16:48:13 -05:00
npease 8862f7b94c Fix login on deployment 2024-02-20 16:47:51 -05:00
Nicholas Pease 6e5af78586 Merge branch 'main' into npease-ui-maps-fix 2024-02-20 16:39:24 -05:00
Nicholas Pease ca731147f2 Move Firebase Auth to .env files to support Vercel deployments (#17) 2024-02-20 16:33:12 -05:00
npease a8dc4d8460 Move to .env.local files instead of files on dir 2024-02-20 16:26:01 -05:00
npease 6a0d3f3834 Add marker on user location (keep?) 2024-02-20 15:08:59 -05:00
npease 04cdc500b2 Load default map then center on users computed location 2024-02-20 14:59:33 -05:00
Nicholas Pease 8cd7cafdb5 Add Initial UI and Authentication (#11) 2024-02-20 14:34:40 -05:00
npease ec2fc15a3f Add onboarding, dashboard with relevant API's 2024-02-20 01:08:12 -05:00
Nicholas Pease d7a2382cb5 Restore Dependency Installation 2024-02-19 16:37:16 -05:00
npease 69d5bfe9a9 Remove build stage to remove conflict with local files 2024-02-19 21:34:08 +00:00
npease c555a59cf8 Spaces Matter 2024-02-19 21:26:32 +00:00
npease d20aecdbe8 Use GH Secrets with Workflow 2024-02-19 21:24:45 +00:00
npease 57a8415e52 Update Build Test 2024-02-19 21:02:14 +00:00
npease f19b09c5fd Update Import Paths 2024-02-19 08:17:17 +00:00
npease c6056c385b Favicon Fixes / Cleanup 2024-02-19 08:06:16 +00:00
npease 7420cc63fb Cleanup/condense package.json files 2024-02-19 07:59:18 +00:00
npease c528c6bacf Refactor / Commentate 2024-02-19 07:50:37 +00:00
npease daedd0b068 Initial UI, Login/Register Flow Prelim, Icons 2024-02-19 06:40:11 +00:00
136 changed files with 16733 additions and 1554 deletions
-29
View File
@@ -1,29 +0,0 @@
name: Frontend Next.Js Build Validation
on:
pull_request:
push:
branches:
- "main"
jobs:
nextjs:
runs-on: ubuntu-latest
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 21.6.2
- name: Install dependencies
run: npm install frontend-next/
- name: Lint
run: npm --prefix frontend-next/ run lint
- name: Build Frontend
run: npm --prefix frontend-next/ run build
+11 -1
View File
@@ -1,3 +1,10 @@
# Android Build
/frontend-next/android
# Firebase Stuff
firebase-admin-key.json
firebase*.json
# Logs
logs
*.log
@@ -127,4 +134,7 @@ dist
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
.pnp.*
# Am I the only mac user
**/.DS_Store
+17 -5
View File
@@ -1,23 +1,35 @@
# ChatMaps
![](/frontend-next/public/logos/logo_transparent.png)
Main repo for ChatMaps, our COS420 Project.
ChatMaps is a web-based social networking service that allows users to connect to others in their local geographic area. It will implement an interactable mapping utility to show general user locations relative to other users, as well as a chat room feature that allows users to start public conversations based on a specified topic. ChatMaps is primarily intended for use in densely populated areas, such as college campuses or metropolitan areas, so people of similar interests can start conversations. The goal of this project is to create a web app that plots locations, gives a radius of the local area, and connects users into different topic-based chat rooms.
ChatMaps is a web-based social networking service that allows users to connect to others in their local geographic area. It implements an interactable mapping utility to show general user locations relative to others, as well as a chat room feature that allows users to start public conversations based on any given topic. ChatMaps is primarily intended for use in densely populated areas, such as college campuses or metropolitan areas, so people of similar interests can start new conversations. The goal of this project is to create a web app that plots locations, gives a radius of the local area, and connects users into different topic-based chat rooms.
This service will implement user login and profiles, allowing users to add each other as friends and start private conversations. There will be several default chat rooms of varying topics, but users will also have the ability to create their own topics that will be viewable by other users. For example, a user at the University of Maine could create a joinable chat room titled “COS420”, which would be visible to others near this campus.
This service implements user login and profiles, allowing users to add each other as friends and start private conversations. There are several default chat rooms of varying topics, but users also have the ability to create their own rooms that will be visible to other users. For example, a user at the University of Maine could create a joinable chat room titled “COS420”, which would be joinable by others near this campus.
This app shares some similarities to other social networks that implement location-based content. ChatMaps novel approach is to utilize user location to facilitate real-time communication with others within a given radius.
The live version of this app can be found at:
http://chatmaps.nicholaspease.com
https://chatma.ps/
A local version can be run with:
Demo Login:<br/>
Email: demo@chatma.ps<br/>
Password: demoapp<br/>
Please note. The demo is restricted to sending messages, and creating rooms. This is intented to ensure the demo remains an adequate example of the functionalities of this application. If you would like to test the full set of features, please make an account.
A local version can be run (assuming you have Node installed) with:
cd frontend-next/
npm install
npm run dev
then navigating to:
http://localhost:3000
NOTICE: Access to firebase from localhost has been disabled due to security considerations. To demo our app, please go to https://chatma.ps!
-1
View File
@@ -1 +0,0 @@
node_modules/
-16
View File
@@ -1,16 +0,0 @@
## Server Update Hook
The purpose of this file is to enable automatic server updates when a pull request to the main branch succeeds. This is accomplished via a workflow sent from Github to the server which then reloads both itself and the frontend.
## API Endpoints
Base Url: ```https://chatmaps.nicholaspease.com/api/v1/```
|Route|Method|Response Type|Use|Responses|
|-----|------|-------------|---|---------|
|```/``` |GET |Plain Text |Heartbeat|200 - "OK"|
|```/deploy```|POST|Plain Text |Server Update Trigger|200 - "OK" - Server Online / Updated
## Files
|File|Purpose|
|----|-------|
|api.js|NodeJS API using Express|
|README.md|API Reference|
-32
View File
@@ -1,32 +0,0 @@
// Physical Server Update Hook
// Imports
// Requires express, body-parser, child_process
const express = require("express")
const bodyParser = require("body-parser")
const { exec } = require("child_process")
// Start the express app and initialize
const app = express()
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // This processes all the POST data as JSON
// Uses nodejs and express as "basic" backend server
// Recieves webhook from Github at https://chatmaps.nicholaspease.com/
app.post("/api/v1/deploy", function (req, res) {
// Webhook returns all pull request actions
// Limit to "closed", "merged", and the target branch being "main"
if (req.body.action == "closed" && req.body.pull_request.merged == true && req.body.pull_request.base.ref == "main") {
// (re)Start all the systemd files
exec("systemctl restart frontend-next.service", (error, stdout, stderr) => {});
exec("systemctl restart server_update_hook.service", (error, stdout, stderr) => {});
}
res.send("OK")
})
// Generic endpoint, useful to test if updater is alive
app.get('/api/v1', (req, res) => {
res.send('OK')
})
// Server runs on port 8000, exposed on server at /api/v1
app.listen(8000)
-728
View File
@@ -1,728 +0,0 @@
{
"name": "backend",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"body-parser": "^1.20.2",
"express": "^4.18.2"
}
},
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
"dependencies": {
"mime-types": "~2.1.34",
"negotiator": "0.6.3"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
},
"node_modules/body-parser": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
"integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
"qs": "6.11.0",
"raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
"set-function-length": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
"dependencies": {
"safe-buffer": "5.2.1"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"ms": "2.0.0"
}
},
"node_modules/define-data-property": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/es-define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
"dependencies": {
"get-intrinsic": "^1.2.4"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/express": {
"version": "4.18.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
"integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
"body-parser": "1.20.1",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
"cookie": "0.5.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "1.2.0",
"fresh": "0.5.2",
"http-errors": "2.0.0",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7",
"qs": "6.11.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
"send": "0.18.0",
"serve-static": "1.15.0",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"engines": {
"node": ">= 0.10.0"
}
},
"node_modules/express/node_modules/body-parser": {
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
"integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
"qs": "6.11.0",
"raw-body": "2.5.1",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/express/node_modules/raw-body": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
"integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/finalhandler": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
"statuses": "2.0.1",
"unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
"hasown": "^2.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dependencies": {
"get-intrinsic": "^1.1.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-property-descriptors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dependencies": {
"es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz",
"integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
},
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/object-inspect": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dependencies": {
"ee-first": "1.1.1"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/qs": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/raw-body": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "2.0.0",
"mime": "1.6.0",
"ms": "2.1.3",
"on-finished": "2.4.1",
"range-parser": "~1.2.1",
"statuses": "2.0.1"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/send/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/serve-static": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"dependencies": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.18.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/set-function-length": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
"integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
"dependencies": {
"define-data-property": "^1.1.2",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.3",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/side-channel": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz",
"integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==",
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4",
"object-inspect": "^1.13.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"engines": {
"node": ">=0.6"
}
},
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"engines": {
"node": ">= 0.8"
}
}
}
}
-6
View File
@@ -1,6 +0,0 @@
{
"dependencies": {
"body-parser": "^1.20.2",
"express": "^4.18.2"
}
}
-8
View File
@@ -1,8 +0,0 @@
## systemd (systemctl) Files
This folder contains all the files required by systemctl on the server for updating and running the backend/frontend. These are copied onto the server and placed in the ```/etc/systemd/system``` folder.
## Files
|Filename|Connected Service|
|--------|-----------------|
|frontend-next.service|Folder: frontend-next|
|server_update_hook.service|Folder: backend/server_update_hook|
-19
View File
@@ -1,19 +0,0 @@
[Unit]
Description=ChatMaps Frontend Server
After=network.target
[Service]
Type=simple
User=root
Group=root
Restart=on-failure
RestartSec=10
WorkingDirectory=/root/ChatMaps/frontend-next
ExecStartPre=/usr/bin/git pull
ExecStartPre=/usr/bin/git checkout main
ExecStartPre=/usr/bin/npm install
ExecStartPre=/usr/bin/npm run build
ExecStart=/usr/bin/npm run start
[Install]
WantedBy=multi-user.target
@@ -1,18 +0,0 @@
[Unit]
Description=ChatMaps Backend Server Updater / Restarter
After=network.target
[Service]
Type=simple
User=root
Group=root
Restart=on-failure
RestartSec=10
WorkingDirectory=/root/ChatMaps/backend/server_update_hook
ExecStartPre=/usr/bin/git pull
ExecStartPre=/usr/bin/git checkout main
ExecStartPre=/usr/bin/npm install
ExecStart=/usr/bin/node api.js
[Install]
WantedBy=multi-user.target
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

+8 -1
View File
@@ -1,3 +1,10 @@
{
"extends": "next/core-web-vitals"
"extends": ["next/core-web-vitals"],
"rules": {
"no-unused-vars": ["warn", { "vars": "all", "args": "after-used", "ignoreRestSiblings": false }],
"jsx-a11y/alt-text": "off",
"@next/next/no-img-element": "off",
"no-console": 1,
"react-hooks/exhaustive-deps": "off"
}
}
+22
View File
@@ -0,0 +1,22 @@
import { Chat } from "../src/components/app/datatypes";
import renderer from 'react-test-renderer';
var exampleChatObj = {
body: "Hello, World!",
isSystem: false,
timestamp: 1710527946340,
user: "TestUser"
}
var exampleUser = {
uid: "123456",
username: "TestUser",
lastOnline: true
}
it('Chat Renders Correctly', () => {
const tree = renderer
.create((<Chat chatObj={exampleChatObj} user={exampleUser} />))
.toJSON();
expect(tree).toMatchSnapshot();
});
@@ -0,0 +1,14 @@
import { ChatRoomSidebar } from "../src/components/app/datatypes";
import renderer from 'react-test-renderer';
var exampleRoom = {
name: "TestRoom",
description: "This is a test room.",
}
it('ChatRoomSidebar Renders Correctly', () => {
const tree = renderer
.create((<ChatRoomSidebar roomObj={exampleRoom} />))
.toJSON();
expect(tree).toMatchSnapshot();
});
+30
View File
@@ -0,0 +1,30 @@
import { DM } from "../src/components/app/friends/dm";
import renderer from 'react-test-renderer';
var message = "Hello, World! This is a test message. https://www.google.com"
var exampleUser = {
uid: "123456",
username: "TestUser",
firstName: "Test",
lastName: "User",
lastOnline: true,
pfp: "https://th.bing.com/th/id/OIP.K5VoTfw97JiEc1OBODAjmQHaHO?rs=1&pid=ImgDetMain"
}
var friendObj = {
uid: "123456",
username: "TestUser",
firstName: "Test",
lastName: "Friend",
lastOnline: true,
pfp: "https://th.bing.com/th/id/OIP.K5VoTfw97JiEc1OBODAjmQHaHO?rs=1&pid=ImgDetMain"
}
it('RMF Renders Correctly', () => {
const tree = renderer
.create(<DM user={exampleUser} friendObj={friendObj} />)
.toJSON();
expect(tree).toMatchSnapshot();
});
+25
View File
@@ -0,0 +1,25 @@
import { FirstPage } from "@mui/icons-material";
import { Member } from "../src/components/app/datatypes";
import renderer from 'react-test-renderer';
var exampleChatObj = {
body: "Hello, World!",
isSystem: false,
timestamp: 1710527946340,
user: "TestUser"
}
var exampleUser = {
uid: "123456",
username: "TestUser",
firstName: "Test",
lastName: "User",
lastOnline: true
}
it('Member Renders Correctly', () => {
const tree = renderer
.create((<Member memberObj={exampleUser} />))
.toJSON();
expect(tree).toMatchSnapshot();
});
+11
View File
@@ -0,0 +1,11 @@
import { RMF } from "../src/components/app/datatypes";
import renderer from 'react-test-renderer';
var message = "Hello, World! This is a test message. https://www.google.com"
it('RMF Renders Correctly', () => {
const tree = renderer
.create((RMF(message)))
.toJSON();
expect(tree).toMatchSnapshot();
});
@@ -0,0 +1,34 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Chat Renders Correctly 1`] = `
<div
className="width-[100%] bg-white rounded-lg mt-1 text-left p-1 grid grid-cols-2 mr-2"
>
<div>
<span
className="mr-[5px]"
style={
{
"color": "#133337",
}
}
>
<a
className="hover:font-bold cursor-pointer"
href="/user?uid=undefined"
onClick={[Function]}
onMouseEnter={[Function]}
onTouchStart={[Function]}
>
TestUser
</a>
</span>
Hello, World!
</div>
<div
className="text-right text-[#d1d1d1]"
>
3/15/2024, 2:39:06 PM
</div>
</div>
`;
@@ -0,0 +1,54 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ChatRoomSidebar Renders Correctly 1`] = `
<div
className="border-[black] border-1 shadow-lg p-2 m-2 rounded-lg cursor-pointer"
>
<a
href="/chat?room=undefined/TestRoom-undefined"
onClick={[Function]}
onMouseEnter={[Function]}
onTouchStart={[Function]}
>
<div
className="grid grid-cols-3"
>
<div
onMouseEnter={[Function]}
onMouseLeave={[Function]}
>
<svg
aria-hidden={true}
className="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
data-testid="PersonIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"
/>
</svg>
<div>
0
/
0
</div>
</div>
<div
className="col-span-2"
>
<div
className="font-bold"
>
TestRoom
</div>
<div
className="italic"
>
This is a test room.
</div>
</div>
</div>
</a>
</div>
`;
@@ -0,0 +1,76 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`RMF Renders Correctly 1`] = `
<div
className="border-[black] border-1 shadow-lg m-2 rounded-lg"
>
<div
className="grid grid-cols-4"
>
<div
className="place-content-center"
>
<svg
aria-hidden={true}
className="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium cursor-pointer css-i4bv87-MuiSvgIcon-root"
data-testid="ChatIcon"
focusable="false"
onClick={[Function]}
viewBox="0 0 24 24"
>
<path
d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2M6 9h12v2H6zm8 5H6v-2h8zm4-6H6V6h12z"
/>
</svg>
</div>
<div
className="col-span-3 cursor-pointer"
>
<div
onClick={[Function]}
>
<div
className="grid grid-cols-2 justify-items-center"
>
<div
className="mr-8"
>
<img
className="w-[50px] h-[50px]"
src="https://th.bing.com/th/id/OIP.K5VoTfw97JiEc1OBODAjmQHaHO?rs=1&pid=ImgDetMain"
/>
</div>
<div
className=""
>
<div
className="font-bold"
>
<svg
aria-hidden={true}
className="MuiSvgIcon-root MuiSvgIcon-fontSize20px text-lime-600 mr-1 relative top-[-2px] css-821wyw-MuiSvgIcon-root"
data-testid="CircleIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2"
/>
</svg>
Test
Friend
</div>
<div
className=""
>
@
TestUser
</div>
</div>
</div>
</div>
</div>
</div>
</div>
`;
@@ -0,0 +1,27 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Member Renders Correctly 1`] = `
<a
href="/user?uid=123456"
onClick={[Function]}
onMouseEnter={[Function]}
onTouchStart={[Function]}
>
<div
className="cursor-pointer g-[aliceblue] rounded-lg m-3 shadow-xl p-2"
>
<svg
aria-hidden={true}
className="MuiSvgIcon-root MuiSvgIcon-fontSize20px text-lime-600 mr-1 relative top-[-1px] css-821wyw-MuiSvgIcon-root"
data-testid="CircleIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2"
/>
</svg>
TestUser
</div>
</a>
`;
@@ -0,0 +1,13 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`RMF Renders Correctly 1`] = `
<span
className="mr-2"
>
Hello, World! This is a test message.
<img
className="max-w-[100%]"
src="https://www.google.com"
/>
</span>
`;
+12
View File
@@ -0,0 +1,12 @@
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.jacsn.chatmaps',
appName: 'ChatMaps',
webDir: 'out',
server: {
androidScheme: 'https'
}
};
export default config;
+21
View File
@@ -0,0 +1,21 @@
import { initializeApp, getApps, getApp } from "firebase/app";
import { getAuth } from "firebase/auth";
import { getDatabase} from "firebase/database"
import {getStorage} from "firebase/storage"
var config = {
apiKey: "AIzaSyDbDPjQGt-lIjNPeTG-Q5AECM1m0vtOr2c",
authDomain: "chatmaps-3e7fa.firebaseapp.com",
projectId: "chatmaps-3e7fa",
storageBucket: "chatmaps-3e7fa.appspot.com",
messagingSenderId: "771010649524",
appId: "1:771010649524:web:b6e66d3457820c817b26e1",
databaseURL: "https://chatmaps-3e7fa-default-rtdb.firebaseio.com/",
}
var app = getApps().length > 0 ? getApp() : initializeApp(config);
var auth = getAuth(app);
var storage = getStorage(app);
var database = getDatabase(app);
export { auth, app, database, storage };
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

+204
View File
@@ -0,0 +1,204 @@
const nextJest = require('next/jest')
/**
* For a detailed explanation regarding each configuration property, visit:
* https://jestjs.io/docs/configuration
*/
/** @type {import('jest').Config} */
const createJestConfig = nextJest({
// Provide the path to your Next.js app to load next.config.js and .env files in your test environment
dir: './',
})
const config = {
testEnvironment: 'jsdom',
// All imported modules in your tests should be mocked automatically
// automock: false,
// Stop running tests after `n` failures
// bail: 0,
// The directory where Jest should store its cached dependency information
// cacheDirectory: "C:\\Users\\Nick\\AppData\\Local\\Temp\\jest",
// Automatically clear mock calls, instances, contexts and results before every test
clearMocks: true,
// Indicates whether the coverage information should be collected while executing the test
collectCoverage: true,
// An array of glob patterns indicating a set of files for which coverage information should be collected
// collectCoverageFrom: undefined,
// The directory where Jest should output its coverage files
coverageDirectory: "coverage",
// An array of regexp pattern strings used to skip coverage collection
// coveragePathIgnorePatterns: [
// "\\\\node_modules\\\\"
// ],
// Indicates which provider should be used to instrument code for coverage
coverageProvider: "v8",
// A list of reporter names that Jest uses when writing coverage reports
// coverageReporters: [
// "json",
// "text",
// "lcov",
// "clover"
// ],
// An object that configures minimum threshold enforcement for coverage results
// coverageThreshold: undefined,
// A path to a custom dependency extractor
// dependencyExtractor: undefined,
// Make calling deprecated APIs throw helpful error messages
// errorOnDeprecated: false,
// The default configuration for fake timers
// fakeTimers: {
// "enableGlobally": false
// },
// Force coverage collection from ignored files using an array of glob patterns
// forceCoverageMatch: [],
// A path to a module which exports an async function that is triggered once before all test suites
// globalSetup: undefined,
// A path to a module which exports an async function that is triggered once after all test suites
// globalTeardown: undefined,
// A set of global variables that need to be available in all test environments
// globals: {},
// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
// maxWorkers: "50%",
// An array of directory names to be searched recursively up from the requiring module's location
// moduleDirectories: [
// "node_modules"
// ],
// An array of file extensions your modules use
// moduleFileExtensions: [
// "js",
// "mjs",
// "cjs",
// "jsx",
// "ts",
// "tsx",
// "json",
// "node"
// ],
// A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
// moduleNameMapper: {},
// An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
// modulePathIgnorePatterns: [],
// Activates notifications for test results
// notify: false,
// An enum that specifies notification mode. Requires { notify: true }
// notifyMode: "failure-change",
// A preset that is used as a base for Jest's configuration
// preset: undefined,
// Run tests from one or more projects
// projects: undefined,
// Use this configuration option to add custom reporters to Jest
// reporters: undefined,
// Automatically reset mock state before every test
// resetMocks: false,
// Reset the module registry before running each individual test
// resetModules: false,
// A path to a custom resolver
// resolver: undefined,
// Automatically restore mock state and implementation before every test
// restoreMocks: false,
// The root directory that Jest should scan for tests and modules within
// rootDir: undefined,
// A list of paths to directories that Jest should use to search for files in
// roots: [
// "<rootDir>"
// ],
// Allows you to use a custom runner instead of Jest's default test runner
// runner: "jest-runner",
// The paths to modules that run some code to configure or set up the testing environment before each test
// setupFiles: [],
// A list of paths to modules that run some code to configure or set up the testing framework before each test
// setupFilesAfterEnv: [],
// The number of seconds after which a test is considered as slow and reported as such in the results.
// slowTestThreshold: 5,
// A list of paths to snapshot serializer modules Jest should use for snapshot testing
// snapshotSerializers: [],
// The test environment that will be used for testing
// testEnvironment: "jest-environment-node",
// Options that will be passed to the testEnvironment
// testEnvironmentOptions: {},
// Adds a location field to test results
// testLocationInResults: false,
// The glob patterns Jest uses to detect test files
// testMatch: [
// "**/__tests__/**/*.[jt]s?(x)",
// "**/?(*.)+(spec|test).[tj]s?(x)"
// ],
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
// testPathIgnorePatterns: [
// "\\\\node_modules\\\\"
// ],
// The regexp pattern or array of patterns that Jest uses to detect test files
// testRegex: [],
// This option allows the use of a custom results processor
// testResultsProcessor: undefined,
// This option allows use of a custom test runner
// testRunner: "jest-circus/runner",
// A map from regular expressions to paths to transformers
// transform: undefined,
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
// transformIgnorePatterns: [
// "\\\\node_modules\\\\",
// "\\.pnp\\.[^\\\\]+$"
// ],
// An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
// unmockedModulePathPatterns: undefined,
// Indicates whether each individual test should be reported during the run
// verbose: undefined,
// An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
// watchPathIgnorePatterns: [],
// Whether to use watchman for file crawling
// watchman: true,
};
module.exports = createJestConfig(config)
+1 -1
View File
@@ -1,4 +1,4 @@
/** @type {import('next').NextConfig} */
const nextConfig = {};
const nextConfig = {output: 'export'};
export default nextConfig;
+12941 -648
View File
File diff suppressed because it is too large Load Diff
+29 -3
View File
@@ -5,18 +5,44 @@
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
"start": "npx serve@latest out",
"lint": "next lint",
"test": "jest"
},
"dependencies": {
"@babel/core": "^7.24.4",
"@babel/preset-env": "^7.24.4",
"@babel/preset-react": "^7.24.1",
"@capacitor/android": "^5.7.4",
"@capacitor/core": "^5.7.4",
"@capacitor/geolocation": "^5.0.7",
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
"@headlessui/react": "^1.7.18",
"@mui/icons-material": "^5.15.14",
"@mui/material": "^5.15.14",
"bad-words": "^3.0.4",
"firebase": "^10.6.0",
"next": "^14.1.0",
"pigeon-maps": "^0.21.3",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react-beforeunload": "^2.6.0",
"react-dom": "^18.2.0",
"react-firebase-hooks": "^5.1.1",
"react-hook-form": "^7.50.1",
"react-test-renderer": "^18.2.0",
"tts-react": "^3.0.6"
},
"devDependencies": {
"@capacitor/assets": "^3.0.5",
"@capacitor/cli": "^5.7.4",
"@testing-library/jest-dom": "^6.4.2",
"@testing-library/react": "^15.0.2",
"autoprefixer": "^10.0.1",
"eslint": "^8",
"eslint-config-next": "14.1.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"postcss": "^8",
"tailwindcss": "^3.3.0"
}
+28
View File
@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<title>User Data Deletion Request</title>
</head>
<body>
<h1>User Data Deletion Request</h1>
<p>
To request the deletion of your user data from our system, please follow the steps below:
</p>
<ol>
<li>Compose an email to <a href="mailto:deletion@chatma.ps">deletion@chatma.ps</a>.</li>
<li>In the email subject, write "User Data Deletion Request".</li>
<li>In the body of the email, provide the following information:</li>
<ul>
<li>Your username: [Insert your username here]</li>
<li>Your email address associated with the account: [Insert your email address here]</li>
</ul>
<li>Send the email.</li>
</ol>
<p>
Our team will process your request as soon as possible. Please note that the deletion of your user data may take some time, and we will notify you once it has been completed.
</p>
<p>
If you have any further questions or concerns, please don't hesitate to contact us at <a href="mailto:support@chatma.ps">support@chatma.ps</a>.
</p>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

+47
View File
@@ -0,0 +1,47 @@
{
"icons": [
{
"src": "../icons/icon-48.webp",
"type": "image/png",
"sizes": "48x48",
"purpose": "any maskable"
},
{
"src": "../icons/icon-72.webp",
"type": "image/png",
"sizes": "72x72",
"purpose": "any maskable"
},
{
"src": "../icons/icon-96.webp",
"type": "image/png",
"sizes": "96x96",
"purpose": "any maskable"
},
{
"src": "../icons/icon-128.webp",
"type": "image/png",
"sizes": "128x128",
"purpose": "any maskable"
},
{
"src": "../icons/icon-192.webp",
"type": "image/png",
"sizes": "192x192",
"purpose": "any maskable"
},
{
"src": "../icons/icon-256.webp",
"type": "image/png",
"sizes": "256x256",
"purpose": "any maskable"
},
{
"src": "../icons/icon-512.webp",
"type": "image/png",
"sizes": "512x512",
"purpose": "any maskable"
}
],
"background_color": "#ffffff"
}
-1
View File
@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

+33
View File
@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ChatMaps Privacy Policy</title>
</head>
<body>
<h1>ChatMaps Privacy Policy</h1>
<p>At ChatMaps, we are committed to protecting your privacy and ensuring the security of your personal information. This privacy policy explains how we collect, use, and safeguard your data when you use our application.</p>
<h2>Collection of Personal Information</h2>
<p>ChatMaps requires access to your location in order to provide you with location-based services. However, we do not share, sell, or disclose your personal data to any third party.</p>
<h2>Child Safety</h2>
<p>ChatMaps is fully compliant with online child safety laws. We do not knowingly collect personal information from children under the age of 13. If you believe that we have inadvertently collected personal information from a child, please contact us immediately so that we can take appropriate action.</p>
<h2>Data Security</h2>
<p>We take the security of your personal information seriously. We implement industry-standard security measures to protect your data from unauthorized access, alteration, or disclosure.</p>
<h2>Changes to this Privacy Policy</h2>
<p>We reserve the right to update or modify this privacy policy at any time. Any changes will be effective immediately upon posting the updated policy on our website.</p>
<h2>Contact Us</h2>
<p>If you have any questions or concerns about our privacy policy, please contact us at privacy@chatma.ps .</p>
</body>
</html>
-1
View File
@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg>

Before

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

+17
View File
@@ -0,0 +1,17 @@
import { Inter } from "next/font/google";
import "../globals.css";
const inter = Inter({ subsets: ["latin"] });
export const metadata = {
title: "ChatMaps: Home",
description: "ChatMaps: Social Media for College Students",
};
export default function RootLayout({ children }) {
return (
<main className={inter.className}>
{children}
</main>
);
}

Some files were not shown because too many files have changed in this diff Show More