Curv - The App Designed to "Curv" Social Media Addiction!

Inspiration

In today's ever growing digital age, social media platforms often lead to negative effects that can hurt all of us. Think depression, anxiety, and cyberbullying. FOMO (fear of missing out), general negativity, and the dreadful brain rot generated by many social media apps including short form video content. While big tech companies are harvesting personal data from their users, misinformation, clickbait, and dishonesty spread, setting a damaging precedent and changing the internet for the worse.

We wanted to create a platform that captures the engaging aspects of social media while eliminating its harmful elements. Curv is designed to keep you informed by keeping you ahead of the Curv and connected, without the downsides of traditional social media.

The Problem We Want to Solve

  • 🕒 People spend excessive time on social media
  • 😔 Social media contributes to depression and anxiety
  • 🎯 Cyberbullying and toxic behavior online
  • 📱 Addictive design patterns in current platform

What it Does

Curv provides a mindful approach to news consumption and community interaction:

  • Clean, distraction-free interface
  • Focus on quality content over engagement metrics
  • Community-driven discussions without the toxicity
  • AI-powered content curation for balanced perspectives

How we built it

Frontend

  • Next.js with TailwindCSS and shadcn/ui components
  • PlotDB - For SVG Theming
  • Custom-made components for specific functions

Backend

  • Python FastAPI - High-performance API server
  • MongoDB Atlas - Cloud database for:
    • User profiles and authentication
    • Article storage and management
    • Comment systems
    • Rating and interaction tracking
    • Content recommendations

AI/ML

  • Google Gemini - Powering:
    • Content summarization
    • Comment analysis
    • Topic classification
    • Trend analyzer

Features

Authentication System

  • Complete user authentication flow
  • Secure password hashing with bcrypt
  • Integration with MongoDB

MongoDB Integration

  • Efficient document-based data storage
  • Real-time data updates
  • Collections for:
    • User post pinning
    • Comment system
    • Rating systems

Modern UI/UX

  • Responsive design
  • Dark/light mode
  • Animated backgrounds using PlotDB
  • Smooth transitions and interactions

Challenges we ran into

  • Integrating MongoDB with authentication and Bcrypt
  • Connecting the frontend to the backend
  • Finding workarounds for the Gemini API's rate limits

Accomplishments that we're proud of

  • Completing this project using tools we were very unfamiliar with
  • Such as Next.js, MongoDB, shadcn/ui, TailwindCSS, and more!
  • Designing a modular and scalable architecture that allows for future expansion and new features
  • Building an end-to-end product—from concept and design to deployment and presentation

What we learned

  • This was our first time using Next.js for frontend development, which presented a steep learning curve compared to Angular.
  • We improved our UI/UX skills through TailwindCSS and shadcn/ui, focusing on accessibility and design best practices
  • Learned to work with FastAPI, enabling us to build a performant and lightweight backend architecture in Python

What's next for Curv

  • Custom themes
  • Further optimization
  • Expanded features inspired by Hackabull's theme (Post-Apocalytic)
  • Continued integration of unique functionalities and quality-of-life improvements

Getting Started

  1. Clone the repository:

    git clone https://github.com/samirjdev/curvapp.git
    cd curv
    
  2. Install dependencies:

    npm install
    
  3. Set up environment variables:

    cp .env.example .env.local
    # Add your API keys and configuration
    
  4. Start the development server:

    npm run dev
    
  5. For the Python backend:

    cd backend
    pip install -r requirements.txt
    uvicorn main:app --reload
    

Environment Variables

Required environment variables:

MONGODB_URI=your_mongodb_uri
GEMINI_API_KEY=your_gemini_api_key
JWT_SECRET=your_jwt_secret

Built With

Share this project:

Updates