A digital scrapbook and relationship mapping platform that helps friends create interactive timelines and visualize how their relationships are interconnected through shared memories and events.
We were inspired by traditional scrapbooks made by friends and wanted to digitize this concept. Our goal was to create a digital timeline of events where users could see how their relationships are "linked" through shared experiences, memories, and photos.
SquadGoals allows users to:
- Input Personal Details: Users create profiles with their information and preferences
- Share Significant Events: Upload photos and details about meaningful events and experiences
- Visualize Relationships: View connections between friends and shared experiences in both:
- Timeline View: Chronological display of events and memories
- Mind Map View: Interactive network visualization showing relationship connections
- Discover Connections: See how "goals" your squad is by exploring mutual connections and shared experiences
We built SquadGoals using a modern MERN stack:
- Frontend: React.js with
vis-networkfor interactive graph visualizations - Backend: Node.js with Express.js
- Database: MongoDB with Mongoose ODM
- Authentication: JWT tokens with Google OAuth integration
- File Upload: Multer for handling profile images and event photos
- React Graph Visualization: Utilizing
vis-networklibrary to create interactive mind maps and relationship networks - Real-time Updates: Dynamic graph rendering that updates as users add new events and connections
- Responsive Design: Mobile-friendly interface that works across all devices
- โ User registration and authentication
- โ Google OAuth integration
- โ Profile management with image uploads
- โ Event creation with photos and descriptions
- โ Interactive mind map visualization
- โ Relationship connection mapping
- โ Protected routes and user sessions
- โ Email verification system
- ๐ Timeline view for chronological event display
- ๐ฌ Commenting system on events
- ๐ Metadata reading and analysis
- ๐ฑ Third-party photo syncing (Instagram, Google Photos)
- ๐ Advanced search and filtering
- ๐ Analytics and insights on relationship patterns
- Team Exhaustion: One team member got sick, and we started getting tired as the hackathon progressed
- Performance Optimization: Optimizing the
vis.jslibrary to prevent slow rendering with large datasets - Learning Curve: One team member had never worked with the MERN stack before, requiring significant learning
- Time Constraints: Balancing feature development with the limited hackathon timeframe
- Passionate Collaboration: Coming up with an idea that the entire team was genuinely excited about
- Learning Achievement: Successfully learning
react-graph-visfrom scratch to implement our visualization features - Full-Stack Development: Building a complete MERN application with authentication, file uploads, and complex data relationships
- User Experience: Creating an intuitive interface for visualizing complex relationship data
- MERN Stack Mastery: One team member went from zero MERN experience to building a full application
- Graph Visualization: Deep dive into
vis-networkandreact-graph-vislibraries - Team Collaboration: Working effectively under time pressure with varying skill levels
- Data Modeling: Designing MongoDB schemas for complex relationship data
- Performance Optimization: Techniques for optimizing graph rendering performance
- Node.js (v14 or higher)
- MongoDB (local or cloud instance)
- npm or yarn
-
Clone the repository
git clone https://github.com/your-username/squadgoals.git cd squadgoals -
Install dependencies
npm run install-all
-
Set up environment variables
Create a
.envfile in the backend directory:MONGODB_URI=mongodb://localhost:27017/squadgoals JWT_SECRET=your_jwt_secret_here GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret EMAIL_USER=your_email@gmail.com EMAIL_PASS=your_app_password
-
Start the development servers
npm run dev
This will start both the backend server (port 5001) and frontend development server (port 3000).
-
Access the application
Open your browser and navigate to
http://localhost:3000
npm run dev- Start both frontend and backend in development modenpm run server- Start only the backend servernpm run client- Start only the frontend development servernpm run build- Build the frontend for productionnpm start- Start the production server
squadgoals/
โโโ backend/
โ โโโ controllers/ # Route controllers
โ โโโ middleware/ # Authentication middleware
โ โโโ models/ # MongoDB models
โ โโโ routes/ # API routes
โ โโโ services/ # Business logic services
โ โโโ uploads/ # File uploads directory
โโโ frontend/
โ โโโ src/
โ โ โโโ components/ # React components
โ โ โโโ contexts/ # React contexts
โ โ โโโ pages/ # Page components
โ โ โโโ utils/ # Utility functions
โ โโโ public/ # Static assets
โโโ package.json # Root package configuration
We have ambitious plans for the future of SquadGoals:
- Enhanced Timeline View: Implement a comprehensive timeline interface for better chronological navigation
- Social Features: Add commenting, reactions, and sharing capabilities
- Smart Analytics: Implement metadata reading and relationship pattern analysis
- Integration: Third-party photo syncing with Instagram, Google Photos, and other platforms
- Mobile App: Native mobile applications for iOS and Android
- AI Features: Smart suggestions for events and relationship insights
- Group Management: Enhanced tools for managing friend groups and permissions
We welcome contributions! Please feel free to:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with โค๏ธ by the SquadGoals team at MRUHacks2025:
-
Matthew Rojas (@MattyTD) - Frontend Developer
- Developed React components and user interfaces
- Implemented interactive mind map visualizations using
vis-network - Built responsive UI/UX for timeline and relationship mapping features
- Integrated Google OAuth authentication flow
- Created dynamic graph rendering and user interaction systems
-
Evan Pitman - Full-Stack Developer
- Contributed to both frontend and backend development
- Assisted with feature implementation and debugging
-
Danny Nguyen - Backend Developer & MongoDB Specialist
- Designed and implemented MongoDB database schemas
- Optimized database queries and data relationships
- Built robust data models for users, events, and relationships
- Implemented efficient data storage and retrieval systems
-
Don Laliberte - Backend Developer
- Developed Express.js API endpoints and routes
- Implemented authentication middleware and JWT token handling
- Built file upload system for images and media
- Created RESTful API architecture and error handling
- MRUHacks2025 for hosting the hackathon
- The
vis-networkcommunity for the excellent visualization library - Our friends who inspired the scrapbook concept
SquadGoals - Because every friendship deserves to be celebrated! ๐