# Project export: JOLO

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: Cal Hacks 11.0
- Tagline: journal out loud -- with simplicity and ease
- Devpost: https://devpost.com/software/jolo-aghcz4
- GitHub: https://github.com/neilteje/calhacks2024
- Demo: https://joloapp.vercel.app/
- Team: 3 GitHub contributor(s) — Neil Teje (19 commits), Rohin Khanapure (6 commits), ritviks3 (4 commits)

## Devpost submission (written by the team)

### Overview

JOLO's

### Inspiration

The idea for JOLO was born from the desire to make journaling more accessible, fun, and engaging. Traditional journaling can be time-consuming and hard to maintain, especially for those with busy schedules or specific challenges like disabilities. We took inspiration from the rising trend of voice-based interfaces, platforms like BeReal, and the growing need for mental health solutions that fit seamlessly into daily life. With JOLO, we aimed to create a voice-first journaling experience that encourages self-reflection while using technology to provide deeper insights into one’s emotional well-being.

### What it does

JOLO is a voice-first journaling app that allows users to record their thoughts through spoken entries, making the process quick and effortless. The app features time-based prompts to nudge users to reflect at different points in the day. It leverages AI to analyze entries, providing users with mood insights, sentiment analysis, and keyword tagging, which helps users better understand their emotions over time. JOLO also incorporates gamified self-reflection, rewarding users for consistent journaling habits, and providing daily, weekly, and monthly summaries of their emotional state.

### How we built it

We built JOLO using React Native for a seamless, cross-platform experience on both iOS and Android devices. The backend was developed in Python, leveraging cloud services for scalable storage and processing. We integrated AI models to perform natural language processing (NLP) for sentiment analysis and keyword tagging, utilizing frameworks like TensorFlow and PyTorch. We also implemented voice-to-text technology to convert users' spoken entries into text for analysis. The app's interface is intuitive, featuring a clean, minimal design with easy navigation between journaling sessions, insights, and achievements. Database MongoDB: Prompt management Ease of connection with APIs like SingleStore and quick retrieval AWS S3: Object storage and user file management Long term mp3 archive storage and scalability AWS Amplify to interact with the S3 bucket in the app APIs Used VAPI Voice API; website: vapi.ai Screens: Home Screen Speech to Speech Interaction, stored as Speech to Text + Speech Journaling with a fine tuned VAPI AI assistant that has been trained on past user journal entries to provide customized support and guidance Journal mp3 recording and transcription is automatically sent as a public entry to the Social Media page and the Archive under the relevant question prompt, creating a new prompt card if necessary Hume Voice AI API; website: hume.ai Screens: Home Screen, Archive Real-time speech-to-text transcription of journal entries SingleStore Screens: All Screens SingleStore Helios for extremely fast JSON processing, allowing the app to handle data retrieval and insertion without noticeable delays. This is particularly beneficial when managing large amounts of prompts in MongoDB Vector searches and live data streams for real-time data updates when a user interacts with a prompt, adds a journal entry or edits existing content Hyperbolic API; website: hyperbolic.xyz + Gemini Screens: Home Screen, Archive, Calendar, Social Media Gemini, integrated alongside the Hyperbolic API, powers the app's live transcription and natural language processing (NLP) capabilities Real-time keyword tagging, language understanding, and context extraction, enhancing the accuracy and relevance of journal prompts and entries; Hyperbolic's inference capabilities are used for advanced voice and text processing. JOLO utilizes this to perform deep analysis on transcribed speech, extracting key phrases, keywords, and tags, which then enrich the journal entries and provide a refined, searchable structure. This allows users to revisit their past entries with context, using semantic analysis to make connections and reflect on their thoughts more effectively. Deepgram - Voice AI; website: Deepgram Screens: Calendar + Private Journaling Retroactive private journaling for past journal prompts by talking to a DeepGram voice assistant Future impl: https://mem0.ai/ for more personalized and accurate responses based on past user journal entries since its a self improving memory layer for applications like this Cartesia Voice API Screens: Archive, Calendar and Social Media Page Automatic language translation of journal recordings and transcriptions based on user-specified language Google Gemini For NLP tagging and semantic search Google Gemini supports JOLO’s natural language processing (NLP) tasks. By tagging important keywords and phrases from journal entries, JOLO provides insights and personalized suggestions to users. With Gemini, we can ensure entries are parsed for sentiment, themes, and topics, which enhances the user's reflective experience and offers deeper insights into their journaling journey. Singlestore: Best Real-Time App; website: Singlestore Singlestore powers the backend database for JOLO, enabling real-time data processing. This integration ensures users' journal entries are stored, accessed, and analyzed instantaneously, offering a smooth, lag-free experience. This real-time capability is essential for providing immediate feedback during live transcription and enabling instant search and retrieval of past entries. Cartesia: Best AI Voice Project; website: Cartesia Sonic Cartesia’s sonic technology enables JOLO’s multilingual support, allowing users to journal in multiple languages seamlessly. This makes JOLO accessible to a wider global audience, ensuring everyone can reflect, express, and capture their thoughts, no matter their preferred language. The integration with Cartesia Sonic also enhances audio processing, delivering accurate transcription for diverse speech patterns. The Future of Speech and Text Interaction JOLO exemplifies the future of voice and text integration by seamlessly merging transcription, inference, and AI-based tagging to provide a holistic journaling experience. We leveraged Calhacks-only APIs, including Hyperbolic and Cartesia, to create a solution that empowers users to express themselves naturally, reflect effectively, and engage with their thoughts meaningfully. The integration of voice AI, NLP, and multilingual support demonstrates JOLO's potential as a universal journaling tool, making speech-to-text interactions more intuitive, empathetic, and accessible.

### Challenges we ran into

One of the biggest challenges was accurately converting voice to text in various conditions, such as background noise or different accents. We had to experiment with different models and tune the settings to optimize for accuracy and responsiveness. Another challenge was building an effective AI model that could provide accurate sentiment analysis across diverse phrases and expressions, ensuring it could pick up on subtleties in users' entries. Lastly, ensuring seamless cross-platform functionality with React Native and dealing with memory management issues during audio processing proved to be quite complex.

### Accomplishments we're proud of

We’re proud of creating an AI-powered journaling app that makes self-care more accessible, especially for users who may struggle with traditional text-based journaling. Our voice-first approach makes the process of self-reflection quicker and easier, and the integration of AI ensures users receive valuable insights from their entries. We also successfully implemented features like time-based prompts and gamified achievements, which enhance user engagement and retention. Our app has a sleek, user-friendly design that we believe will appeal to a broad audience.

### What we learned

Through building JOLO, we learned a lot about the nuances of voice interaction and natural language processing, especially the importance of handling edge cases like slang, mixed languages, and abbreviations. We also learned how crucial it is to build an intuitive user experience that guides users naturally through the process, as journaling can be a deeply personal activity. Additionally, we learned how to balance complex backend AI processing with a smooth frontend experience, ensuring the app remains responsive even with real-time voice-to-text conversion.

### What's next

Moving forward, we want to expand JOLO’s capabilities by introducing more advanced features, such as mood tracking based on tone analysis, integration with smart assistants for hands-free journaling, and deeper insights through customizable tags. We also plan to implement multilingual support, allowing users to journal in their preferred language. Finally, we see potential in forming partnerships with mental health platforms, providing additional resources to users who may need them, and launching JOLO+ as a premium subscription with advanced analytics, unlimited entries, and personalized journaling prompts.

## README (from the GitHub repository)

# JOLO - Journaling Out Loud 🗣️📝

## **Introduction**
Welcome to **JOLO**, the voice-first journaling app designed to help you express yourself, reflect, and track your emotions effortlessly. JOLO transforms the traditional journaling experience by letting you speak your thoughts instead of writing them down, making self-reflection quick, intuitive, and engaging. Built for busy individuals, auditory learners, and anyone who prefers to "talk it out," JOLO offers AI-powered emotional insights, gamified progress tracking, and daily prompts to guide your self-reflection journey.

**Key Features:**
- **Voice-First Journaling**: Easily capture your thoughts by speaking instead of typing.
- **AI-Powered Emotional Insights**: Get real-time feedback on your mood and emotions.
- **Gamified Progress Tracking**: Stay motivated with streaks, badges, and achievements.
- **Time-Based Prompts**: Receive daily prompts to guide your reflections.
- **Cloud Sync**: Securely store and access your voice entries across all devices.

## **Table of Contents**
- [Project Structure](#project-structure)
- [Technologies Used](#technologies-used)
- [Getting Started](#getting-started)
  - [Prerequisites](#prerequisites)
  - [Setup](#setup)
  - [Running the App](#running-the-app)
- [Contributing](#contributing)
- [License](#license)

## **Project Structure**
```
/backend
  ├── /controllers      # Logic to handle requests and responses
  ├── /models           # MongoDB data models
  ├── /routes           # API routes
  ├── /services         # Business logic and integrations (e.g., AI services)
  ├── /utils            # Utility functions
  ├── server.js         # Main server file
  └── .env.example      # Environment variables template

/frontend
  ├── /android
  ├── /ios
  ├── /src
      ├── /components       # Reusable UI components
      ├── /screens          # Different screens (e.g., Home, Journal, AI Feedback)
      ├── /services         # Services for API calls
      ├── /context          # Context providers for state management
      ├── /navigation       # Navigation setup (e.g., React Navigation)
      ├── /utils            # Utility functions
      └── App.js            # Main app entry point

/website
  ├── /public              # Static assets like images, icons, etc.
  ├── /src
      ├── /components       # Reusable UI components for the website
      ├── /pages            # Different pages (e.g., Home, About, Features)
      ├── /styles           # CSS/SCSS files for styling
      ├── /utils            # Utility functions and helpers
      └── index.js          # Main entry point for the website
```

## **Technologies Used**
- **Frontend**: React Native, React Navigation, JavaScript/TypeScript
- **Backend**: Node.js, Express, MongoDB, WebSockets
- **AI Integration**: Google Cloud AI, AWS Machine Learning, or custom models
- **Cloud Storage**: AWS S3 or Firebase Storage
- **Authentication**: JWT (JSON Web Tokens)

## **Getting Started**
### **Prerequisites**
- **Node.js**: Install the latest version from [Node.js](https://nodejs.org/)
- **npm**: Comes bundled with Node.js
- **React Native CLI**: Install via `npm install -g react-native-cli`
- **MongoDB**: Set up a MongoDB instance (local or cloud-based)

### Contributing
We welcome contributions! If you'd like to contribute to JOLO, please fork the repository, make your changes, and submit a pull request. For major changes, please open an issue first to discuss what you would like to change.

### To Do List:
- Implement AI emotional analysis integration
- Improve real-time feedback features
- Add more language support for voice entries

### License
This project is licensed under the MIT License. See the LICENSE file for details.


## Detected evidence (automated analysis)

Indexed codebase: 77 recognized source files, 330 KB.
- C (language) — detected in the code
- CSS (language) — detected in the code
- Express (technology) — detected in the code
- JavaScript (language) — detected in the code
- Kotlin (language) — detected in the code
- MongoDB (technology) — detected in the code
- Next.js (technology) — detected in the code
- Python (language) — detected in the code
- React (technology) — detected in the code
- Tailwind CSS (technology) — detected in the code
- TypeScript (language) — detected in the code
- Google Gemini (technology) — claimed on Devpost, not found in the code
- Node.js (technology) — claimed on Devpost, not found in the code

## Codebase structure (from repository index)

### Files (120 of 127)

```
.DS_Store
.gitignore
backend/.env
backend/.env.example
backend/controllers/questionController.js
backend/hyperbolic.js
backend/models/Question.js
backend/models/RetroactiveJOLO.js
backend/multilingual.js
backend/nlptagging.js
backend/package.json
backend/routes/questionRoutes.js
backend/sample1.py
backend/seedQuestions.js
backend/server.js
backend/singleStore.JS
frontend/.DS_Store
frontend/JOLO/__tests__/App.test.tsx
frontend/JOLO/.bundle/config
frontend/JOLO/.env
frontend/JOLO/.eslintrc.js
frontend/JOLO/.gitignore
frontend/JOLO/.prettierrc.js
frontend/JOLO/.watchmanconfig
frontend/JOLO/.yarn/releases/yarn-stable-temp.cjs
frontend/JOLO/android/app/build.gradle
frontend/JOLO/android/app/debug.keystore
frontend/JOLO/android/app/proguard-rules.pro
frontend/JOLO/android/app/src/debug/AndroidManifest.xml
frontend/JOLO/android/app/src/main/AndroidManifest.xml
frontend/JOLO/android/app/src/main/java/com/jolo/MainActivity.kt
frontend/JOLO/android/app/src/main/java/com/jolo/MainApplication.kt
frontend/JOLO/android/app/src/main/res/drawable/rn_edit_text_material.xml
frontend/JOLO/android/app/src/main/res/values/strings.xml
frontend/JOLO/android/app/src/main/res/values/styles.xml
frontend/JOLO/android/build.gradle
frontend/JOLO/android/gradle.properties
frontend/JOLO/android/gradle/wrapper/gradle-wrapper.properties
frontend/JOLO/android/gradlew
frontend/JOLO/android/gradlew.bat
frontend/JOLO/android/settings.gradle
frontend/JOLO/app.json
frontend/JOLO/App.tsx
frontend/JOLO/babel.config.js
frontend/JOLO/Gemfile
frontend/JOLO/Gemfile.lock
frontend/JOLO/index.js
frontend/JOLO/ios/.xcode.env
frontend/JOLO/ios/JOLO.xcodeproj/project.pbxproj
frontend/JOLO/ios/JOLO.xcodeproj/xcshareddata/xcschemes/JOLO.xcscheme
frontend/JOLO/ios/JOLO.xcworkspace/contents.xcworkspacedata
frontend/JOLO/ios/JOLO/AppDelegate.h
frontend/JOLO/ios/JOLO/AppDelegate.mm
frontend/JOLO/ios/JOLO/Images.xcassets/AppIcon.appiconset/Contents.json
frontend/JOLO/ios/JOLO/Images.xcassets/Contents.json
frontend/JOLO/ios/JOLO/Info.plist
frontend/JOLO/ios/JOLO/LaunchScreen.storyboard
frontend/JOLO/ios/JOLO/main.m
frontend/JOLO/ios/JOLO/PrivacyInfo.xcprivacy
frontend/JOLO/ios/JOLOTests/Info.plist
frontend/JOLO/ios/JOLOTests/JOLOTests.m
frontend/JOLO/ios/Podfile
frontend/JOLO/ios/Podfile.lock
frontend/JOLO/jest.config.js
frontend/JOLO/metro.config.js
frontend/JOLO/package.json
frontend/JOLO/README.md
frontend/JOLO/src/components/RetroactiveJOLO.jsx
frontend/JOLO/src/components/SemanticSearch.jsx
frontend/JOLO/src/components/SoundPulseVisualizer.tsx
frontend/JOLO/src/screens/ArchiveScreen.tsx
frontend/JOLO/src/screens/CalendarScreen.tsx
frontend/JOLO/src/screens/GamifiedProfile.tsx
frontend/JOLO/src/screens/HomeScreen.tsx
frontend/JOLO/src/screens/JournalScreen.tsx
frontend/JOLO/src/screens/ProfileScreen.tsx
frontend/JOLO/src/screens/SocialMedia.tsx
frontend/JOLO/tsconfig.json
frontend/sample.py
README.md
website/.env.example
website/.eslintrc.json
website/.gitignore
website/components.json
website/content/how-to-use-it.mdx
website/content/introducing-acme-ai.mdx
website/content/why-to-use-it.mdx
website/next.config.mjs
website/package.json
website/postcss.config.mjs
website/README.md
website/src/app/globals.css
website/src/app/layout.tsx
website/src/app/og/route.tsx
website/src/app/page.tsx
website/src/app/sitemap.ts
website/src/components/icons.tsx
website/src/components/mobile-drawer.tsx
website/src/components/section.tsx
website/src/components/sections/benefits.tsx
website/src/components/sections/bento.tsx
website/src/components/sections/cta.tsx
website/src/components/sections/faq.tsx
website/src/components/sections/feature-highlight.tsx
website/src/components/sections/feature-scroll.tsx
website/src/components/sections/features.tsx
website/src/components/sections/footer.tsx
website/src/components/sections/header.tsx
website/src/components/sections/hero.tsx
website/src/components/sections/pricing.tsx
website/src/components/sections/testimonials.tsx
website/src/components/tailwind-indicator.tsx
website/src/components/theme-provider.tsx
website/src/components/theme-toggle.tsx
website/src/components/ui/accordion.tsx
website/src/components/ui/button.tsx
website/src/components/ui/card.tsx
website/src/components/ui/drawer.tsx
website/src/components/ui/input.tsx
website/src/components/ui/label.tsx
[7 more files omitted for size]
```

### Dependencies

- backend/package.json: bcryptjs@^2.4.3, cors@^2.8.5, dotenv@^16.4.5, express@^4.21.1, jsonwebtoken@^9.0.2, mongodb@4.0, mongoose@^8.7.2, nodemon@^3.1.7
- frontend/JOLO/package.json: @babel/core@^7.20.0, @babel/preset-env@^7.20.0, @babel/runtime@^7.20.0, @daily-co/react-native-daily-js@^0.69.0, @daily-co/react-native-webrtc@118.0.3-daily.1, @react-native-assets/slider@^8.0.0, @react-native-async-storage/async-storage@^1.24.0, @react-native-community/masked-view@^0.1.11, @react-native/babel-preset@0.75.4, @react-native/eslint-config@0.75.4, @react-native/metro-config@0.75.4, @react-native/typescript-config@0.75.4, @react-navigation/bottom-tabs@^6.6.1, @react-navigation/native@^6.1.18, @react-navigation/stack@^6.4.1, @types/react@^18.2.6, @types/react-native-vector-icons@^6.4.18, @types/react-test-renderer@^18.0.0, @types/ws@^8.5.12, @vapi-ai/react-native@^0.1.9, axios@^1.7.7, babel-jest@^29.6.3, eslint@^8.19.0, jest@^29.6.3, prettier@2.8.8, react@18.3.1, react-audio-visualize@^1.2.0, react-native@0.75.4, react-native-audio@^4.3.0, react-native-audio-recorder-player@^3.6.12, react-native-background-timer@^2.4.1, react-native-gesture-handler@^2.20.0, react-native-get-random-values@^1.11.0, react-native-linear-gradient@^2.8.3, react-native-permissions@^5.0.1, react-native-reanimated@^3.16.0, react-native-safe-area-context@^4.11.1, react-native-screens@^3.34.0, react-native-svg@^15.8.0, react-native-vector-icons@^10.2.0, react-test-renderer@18.3.1, typescript@5.0.4
- website/package.json: @radix-ui/react-accordion@^1.2.0, @radix-ui/react-icons@^1.3.0, @radix-ui/react-label@^2.1.0, @radix-ui/react-slot@^1.1.0, @tailwindcss/typography@^0.5.13, @types/node@^20, @types/react@^18, @types/react-dom@^18, class-variance-authority@^0.7.0, clsx@^2.1.1, eslint@^8, eslint-config-next@14.2.7, framer-motion@^11.3.21, lucide-react@^0.417.0, next@14.2.7, next-themes@^0.3.0, postcss@^8, react@^18.3.1, react-dom@^18.3.1, react-icons@^5.2.1, tailwind-merge@^2.4.0, tailwindcss@^3.4.1, tailwindcss-animate@^1.0.7, typescript@^5, vaul@^0.9.1

### Recent commits (newest first)

- singlestore integration
- hyperbolic
- calendar with deepgram
- gamification
- all api integrations
- final changes
- random push
- backend
- mic no work
- navbar issue fixed
- frontend almost done
- frontend done
- Merge remote-tracking branch 'origin/rkhanapure'
- Fixed timezone bug Calendar
- backend setup
- Temp Commit
- icons and recording works
- Merge branch 'master' into rkhanapure
- Calendar frontend done
- Calendar v1 complete

## Key source files (fetched from GitHub, selected and truncated for size)

### website/content/introducing-acme-ai.mdx

```
---
title: Introducing Acme.ai
publishedAt: "2024-08-29"
summary: Introducing Acme.ai, a cutting-edge AI solution for modern businesses.
author: "dillionverma"
image: "/introducing.png"
---

We're excited to unveil **Acme.ai**, an innovative AI-powered platform designed to transform your business operations and skyrocket productivity. 🚀

## The Challenge We're Addressing

In today's AI-driven world, businesses face several hurdles:

- Overwhelming data analysis
- Inefficient decision-making processes
- Difficulty in predicting market trends

Acme.ai tackles these challenges head-on, offering a sophisticated AI solution that simplifies complex business processes.

## Our Mission

1. **Accelerate Decision-Making**: By leveraging AI to analyze vast datasets, we help you make informed decisions faster.
2. **Enhance Forecasting**: Our advanced predictive models provide accurate insights into future trends.
3. **Optimize Operations**: With AI-driven recommendations, streamline your business processes effortlessly.

## Core Capabilities

- **AI-Powered Dashboard**: Get real-time, AI-interpreted insights at a glance
- **Predictive Analytics**: Forecast trends and make data-driven decisions
- **Natural Language Processing**: Interact with your data using simple language queries
- **Automated Reporting**: Generate comprehensive reports with a single click
- **Customizable AI Models**: Tailor the AI to your specific industry needs

## Why Acme.ai Stands Out

> "Acme.ai has revolutionized our strategic planning. It's like having a crystal ball for our business!" - John Smith, CFO of FutureTech

Our AI solution isn't just a tool; it's your competitive edge. Here's how we compare:

| Feature                  | Acme.ai | Traditional BI Tools |
| ------------------------ | ------- | -------------------- |
| AI-Powered Insights      | ✅      | ❌                   |
| Predictive Capabilities  | ✅      | ❌                   |
| Natural Language Queries | ✅      | ❌                   |

## Embarking on Your AI Journey

Getting started with Acme.ai is seamless:

1. Sign up for a demo
2. Integrate your data sources
3. Start unlocking AI-driven insights

```

### website/content/why-to-use-it.mdx

```
---
title: Why to use Acme.ai?
publishedAt: "2024-08-29"
summary: Introducing Acme.ai, a cutting-edge AI solution for modern businesses.
author: "dillionverma"
image: "/introducing.png"
---

We're excited to unveil **Acme.ai**, an innovative AI-powered platform designed to transform your business operations and skyrocket productivity. 🚀

## The Challenge We're Addressing

In today's AI-driven world, businesses face several hurdles:

- Overwhelming data analysis
- Inefficient decision-making processes
- Difficulty in predicting market trends

Acme.ai tackles these challenges head-on, offering a sophisticated AI solution that simplifies complex business processes.

## Our Mission

1. **Accelerate Decision-Making**: By leveraging AI to analyze vast datasets, we help you make informed decisions faster.
2. **Enhance Forecasting**: Our advanced predictive models provide accurate insights into future trends.
3. **Optimize Operations**: With AI-driven recommendations, streamline your business processes effortlessly.

## Core Capabilities

- **AI-Powered Dashboard**: Get real-time, AI-interpreted insights at a glance
- **Predictive Analytics**: Forecast trends and make data-driven decisions
- **Natural Language Processing**: Interact with your data using simple language queries
- **Automated Reporting**: Generate comprehensive reports with a single click
- **Customizable AI Models**: Tailor the AI to your specific industry needs

## Why Acme.ai Stands Out

> "Acme.ai has revolutionized our strategic planning. It's like having a crystal ball for our business!" - John Smith, CFO of FutureTech

Our AI solution isn't just a tool; it's your competitive edge. Here's how we compare:

| Feature                  | Acme.ai | Traditional BI Tools |
| ------------------------ | ------- | -------------------- |
| AI-Powered Insights      | ✅      | ❌                   |
| Predictive Capabilities  | ✅      | ❌                   |
| Natural Language Queries | ✅      | ❌                   |

## Embarking on Your AI Journey

Getting started with Acme.ai is seamless:

1. Sign up for a demo
2. Integrate your data sources
3. Start unlocking AI-driven insights

```

### backend/package.json

```
{
  "name": "backend",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "cors": "^2.8.5",
    "dotenv": "^16.4.5",
    "express": "^4.21.1",
    "jsonwebtoken": "^9.0.2",
    "mongodb": "4.0",
    "mongoose": "^8.7.2"
  },
  "description": "",
  "devDependencies": {
    "nodemon": "^3.1.7"
  }
}

```

### website/package.json

```
{
  "name": "mobile-magicui",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@radix-ui/react-accordion": "^1.2.0",
    "@radix-ui/react-icons": "^1.3.0",
    "@radix-ui/react-label": "^2.1.0",
    "@radix-ui/react-slot": "^1.1.0",
    "class-variance-authority": "^0.7.0",
    "clsx": "^2.1.1",
    "framer-motion": "^11.3.21",
    "lucide-react": "^0.417.0",
    "next": "14.2.7",
    "next-themes": "^0.3.0",
    "react": "^18.3.1",
    "react-dom": "^18.3.1",
    "react-icons": "^5.2.1",
    "tailwind-merge": "^2.4.0",
    "tailwindcss-animate": "^1.0.7",
    "vaul": "^0.9.1"
  },
  "devDependencies": {
    "@tailwindcss/typography": "^0.5.13",
    "@types/node": "^20",
    "@types/react": "^18",
    "@types/react-dom": "^18",
    "eslint": "^8",
    "eslint-config-next": "14.2.7",
    "postcss": "^8",
    "tailwindcss": "^3.4.1",
    "typescript": "^5"
  }
}

```

### frontend/JOLO/Gemfile

```
source 'https://rubygems.org'

# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby ">= 2.6.10"

# Exclude problematic versions of cocoapods and activesupport that causes build failures.
gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1'
gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'

```

### frontend/JOLO/package.json

```
{
  "name": "JOLO",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "lint": "eslint .",
    "start": "react-native start",
    "test": "jest"
  },
  "dependencies": {
    "@daily-co/react-native-daily-js": "^0.69.0",
    "@daily-co/react-native-webrtc": "118.0.3-daily.1",
    "@react-native-assets/slider": "^8.0.0",
    "@react-native-async-storage/async-storage": "^1.24.0",
    "@react-native-community/masked-view": "^0.1.11",
    "@react-navigation/bottom-tabs": "^6.6.1",
    "@react-navigation/native": "^6.1.18",
    "@react-navigation/stack": "^6.4.1",
    "@vapi-ai/react-native": "^0.1.9",
    "axios": "^1.7.7",
    "react": "18.3.1",
    "react-audio-visualize": "^1.2.0",
    "react-native": "0.75.4",
    "react-native-audio": "^4.3.0",
    "react-native-audio-recorder-player": "^3.6.12",
    "react-native-background-timer": "^2.4.1",
    "react-native-gesture-handler": "^2.20.0",
    "react-native-get-random-values": "^1.11.0",
    "react-native-linear-gradient": "^2.8.3",
    "react-native-permissions": "^5.0.1",
    "react-native-reanimated": "^3.16.0",
    "react-native-safe-area-context": "^4.11.1",
    "react-native-screens": "^3.34.0",
    "react-native-svg": "^15.8.0",
    "react-native-vector-icons": "^10.2.0"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0",
    "@babel/preset-env": "^7.20.0",
    "@babel/runtime": "^7.20.0",
    "@react-native/babel-preset": "0.75.4",
    "@react-native/eslint-config": "0.75.4",
    "@react-native/metro-config": "0.75.4",
    "@react-native/typescript-config": "0.75.4",
    "@types/react": "^18.2.6",
    "@types/react-native-vector-icons": "^6.4.18",
    "@types/react-test-renderer": "^18.0.0",
    "@types/ws": "^8.5.12",
    "babel-jest": "^29.6.3",
    "eslint": "^8.19.0",
    "jest": "^29.6.3",
    "prettier": "2.8.8",
    "react-test-renderer": "18.3.1",
    "typescript": "5.0.4"
  },
  "engines": {
    "node": ">=18"
  }
}

```

### backend/server.js

```javascript
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const Question = require('./models/Question');

const app = express();
const PORT = process.env.PORT || 5001;

app.use(cors());
app.use(express.json());

// Connect to MongoDB
mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
})
.then(() => console.log('Connected to MongoDB'))
.catch((err) => console.error('Failed to connect to MongoDB', err));

// Define route to fetch questions
app.get('/api/questions', async (req, res) => {
  try {
    const questions = await Question.find();
    res.json(questions);
  } catch (error) {
    res.status(500).json({ error: 'Error fetching questions' });
  }
});

// Start the server
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

```

### frontend/JOLO/index.js

```javascript
/**
 * @format
 */
import 'react-native-gesture-handler';
import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';

AppRegistry.registerComponent(appName, () => App);

```

### frontend/JOLO/App.tsx

```typescript
import React from 'react';
import { NavigationContainer, DarkTheme } from '@react-navigation/native';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import HomeScreen from './src/screens/HomeScreen';
import CalendarScreen from './src/screens/CalendarScreen';
import ArchiveScreen from './src/screens/ArchiveScreen';
import ProfileScreen from './src/screens/ProfileScreen';
import Ionicons from 'react-native-vector-icons/Ionicons';

const Tab = createBottomTabNavigator();

const getTabBarIcon = (route: any, focused: boolean, color: string, size: number) => {
  let iconName: string = '';

  switch (route.name) {
    case 'Home':
      iconName = focused ? 'home' : 'home-outline';
      break;
    case 'Archive':
      iconName = focused ? 'albums' : 'albums-outline';
      break;
    case 'Profile':
      iconName = focused ? 'person' : 'person-outline';
      break;
    case 'Calendar':
      iconName = focused ? 'calendar' : 'calendar-outline';
      break;
    default:
      iconName = 'home-outline';
  }

  return <Ionicons name={iconName} size={size} color={color} />;
};

import { StatusBar } from 'react-native';

const App = (): React.JSX.Element => {
    return (
        <GestureHandlerRootView style={{ flex: 1 }}>
            <NavigationContainer theme={DarkTheme}>
                <StatusBar barStyle="light-content" backgroundColor="#000" /> 
                <Tab.Navigator
                    initialRouteName="Home"
                    screenOptions={({ route }) => ({
                        tabBarIcon: ({ focused, color, size }) => getTabBarIcon(route, focused, color, size),
                        tabBarActiveTintColor: '#FFF',
                        tabBarInactiveTintColor: '#888',
                        tabBarStyle: {
                            backgroundColor: '#000',
                            borderTopLeftRadius: 0,
                            borderTopRightRadius: 0,
                            overflow: 'hidden',
                            height: 60,
                            paddingBottom: 10,
                            borderTopWidth: 0, 
                        },
                        headerShown: false,
                    })}
                >
                    <Tab.Screen name="Home" component={HomeScreen} />
                    <Tab.Screen name="Archive" component={ArchiveScreen} />
                    <Tab.Screen name="Calendar" component={CalendarScreen} />
                    <Tab.Screen name="Profile" component={ProfileScreen} initialParams={{ user: 'Neil Teje', email: 'nteje2@illinois.edu' }} />
                </Tab.Navigator>
            </NavigationContainer>
        </GestureHandlerRootView>
    );
};

export default App;
```

### website/src/app/page.tsx

```typescript
import { Benefits } from "@/components/sections/benefits";
import { BentoGrid } from "@/components/sections/bento";
import { CTA } from "@/components/sections/cta";
import { FAQ } from "@/components/sections/faq";
import { FeatureHighlight } from "@/components/sections/feature-highlight";
import { FeatureScroll } from "@/components/sections/feature-scroll";
import { Features } from "@/components/sections/features";
import { Footer } from "@/components/sections/footer";
import { Header } from "@/components/sections/header";
import { Hero } from "@/components/sections/hero";
import { Pricing } from "@/components/sections/pricing";
import { Testimonials } from "@/components/sections/testimonials";

export default function Home() {
  return (
    <main className="relative">
      <Header />
      <Hero />
      <FeatureScroll />
      <FeatureHighlight />
      <BentoGrid />
      <Benefits />
      <Features />
      <Testimonials />
      <Pricing />
      <FAQ />
      <CTA />
      <Footer />
    </main>
  );
}

```

[70 more indexed source files omitted to keep this export small. The full file list is in the Codebase structure section above.]