Skip to content

franpts2/junto.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

841 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

junto. - Social Media Platform

Laravel PHP PostgreSQL Tailwind CSS JavaScript

About

Junto is a full-featured social media platform designed to bring people together through shared cultural interests. The platform combines traditional social networking features with media discovery, allowing users to connect, share, and discuss their favorite movies, books, and music.

Key Features

Authentication & User Management

  • Secure authentication (email/password, Google OAuth)
  • Password recovery via email
  • Customizable user profiles (bio, avatar, favorites)
  • Block/unblock system with appeal mechanism
  • Privacy controls for connections and visibility

Social Feed & Interactions

  • Personalized timeline (friends & groups)
  • Post creation with text and images
  • Media reviews (movies, books, music)
  • Like and comment system
  • Real-time AJAX feed updates
  • Content filtering (all/friends-only)

Messaging System

  • Direct messages (private chat)
  • Real-time chat updates
  • Conversation management (delete, history)
  • Mention system (@user tagging)

Friend Network

  • Send/accept/reject friend requests
  • Friends list and management
  • User search and discovery
  • Dedicated friends feed

Media Library Integration

  • Browse/search movies, books, music
  • Add media to favorites
  • Share reviews and ratings

Groups & Communities

  • Create and manage groups
  • Admin/member roles
  • Join/invite requests
  • Group posts and discussions

Advanced Search

  • Search users, posts, comments, groups
  • Full-text and filtered search

Administration & Moderation

  • Admin dashboard
  • User moderation (block/unblock, appeals)
  • Content reports and review
  • Platform analytics

Notification System

  • Friend requests, group invites
  • Likes, comments, and message alerts

Technical Implementation

Tech Stack

  • Framework: Laravel 12.x (PHP 8.2+)
  • Database: PostgreSQL (Dockerized)
  • Frontend: TailwindCSS 4.0, Vite
  • Authentication: Laravel Sanctum, Google OAuth
  • Storage: Local filesystem for uploads
  • Development: Docker Compose

System Architecture

┌─────────────────────────────┐
│   Frontend (Blade + Vite)   │
│   TailwindCSS + JavaScript  │
├─────────────────────────────┤
│   Laravel 12 Backend        │
│   (MVC + Policies)          │
├─────────────────────────────┤
│   PostgreSQL Database       │
│   (Docker Container)        │
└─────────────────────────────┘

Database Schema

  • Users & Authentication: users, password resets, sessions
  • Social Network: friend requests, friendships, followers
  • Content: posts, reviews, comments, likes
  • Groups: groups, memberships, invites, join requests
  • Media: movies, books, music, favorites
  • Messaging: direct messages
  • Notifications: friend requests, group invites, mentions
  • Moderation: reports, blocks, unblock appeals
  • Security: login attempts, session management

Key Laravel Features

  • Eloquent ORM (rich relationships)
  • Authorization policies
  • Form validation
  • Middleware (auth, guards)
  • Service layer abstraction
  • File uploads (images)
  • Email notifications

Setup and Installation

Prerequisites

  • PHP 8.2+
  • Composer 2.2+
  • Docker & Docker Compose
  • Node.js 18+

Quick Start

  1. Clone the repository

  2. Install dependencies

    composer install
    npm install
  3. Start PostgreSQL with Docker

    docker compose up -d
  4. Configure environment

    cp .env.example .env
    php artisan key:generate

    Update .env with database credentials:

    DB_CONNECTION=pgsql
    DB_HOST=localhost
    DB_PORT=5432
    DB_DATABASE=postgres
    DB_USERNAME=postgres
    DB_PASSWORD=password
    
  5. Seed the database

    php artisan db:seed
  6. Build frontend assets

    npm run build
    # Or for development with hot reload:
    npm run dev
  7. Start the development server

    php artisan serve

Access the application at http://localhost:8000

Docker Quick Run

To run the app with Docker only:

docker run -d --name lbaw2544 -p 8001:80 gitlab.up.pt:5050/lbaw/lbaw2526/lbaw2544

P.S. only available upon FEUP authentication in Docker

Database Management

pgAdmin 4 is available at http://localhost:4321 to manage the PostgreSQL database.

Connection details:

  • Hostname: postgres
  • Username: postgres
  • Password: password

Troubleshooting

Database connection issues:

docker compose down
docker compose up -d
php artisan db:seed

Asset compilation errors:

npm ci
npm run build

Test Credentials

You can use the seeded database accounts or create your own.

Administration Credentials

Email Password
admin@example.org 1234

User Credentials

Type Email Password
basic account alice@example.org 1234
basic account bruno@example.org 1234

Project Structure

junto/
├── app/
│   ├── Helpers/               # Utility helpers
│   ├── Http/
│   │   ├── Controllers/       # Request handlers
│   │   ├── Middleware/        # Request filters
│   ├── Models/                # Eloquent models
│   ├── Policies/              # Authorization rules
│   └── Services/              # Business logic
├── bootstrap/                 # App bootstrap files
├── config/                    # Configuration files
├── database/
│   ├── factories/             # Model factories
│   ├── migrations/            # Database schema
│   ├── seeders/               # Seed classes
│   └── junto-seed.sql         # Initial data
├── docs/
│   └── a7_openapi.yaml        # API specification
├── etc/                       # Docker, nginx, php configs
├── public/                    # Public assets (entry, css, js, images)
├── resources/
│   ├── css/                   # Stylesheets
│   ├── js/                    # JavaScript modules
│   └── views/                 # Blade templates
│       ├── components/        # Reusable UI components (admin, account, dashboard, groups, etc.)
│       ├── errors/            # Error pages (404, etc.)
│       ├── layouts/           # Layout templates (admin, app, auth, base, minimal)
│       ├── pages/             # Main pages (about, home, features, admin, auth, groups, messages, notifications, profile, search)
├── routes/
│   ├── console.php            # CLI routes
│   └── web.php                # Application routes
├── storage/                   # Logs, cache, uploads
├── tests/                     # PHPUnit tests
├── vendor/                    # Composer dependencies
├── videos/                    # Video Demo
├── artisan                    # Laravel CLI
├── composer.json              # Composer dependencies
├── docker-compose.yaml        # Docker services
├── Dockerfile                 # Docker build file
├── package.json               # Node dependencies
├── phpunit.xml                # PHPUnit config
├── README.md                  # Project documentation
├── vite.config.js             # Vite config
└── upload_image.sh            # Image upload script

Video Demo & API Documentation

  • Video Demo:

    • The project video demonstration is available at videos/lbaw2544.mp4. Open this file to watch the latest demo showcasing the platform's features and user experience.
  • API Documentation & Certificates:

    • The OpenAPI (Swagger) specification for the platform's API is available in docs/a7_openapi.yaml. This file provides a comprehensive description of available API endpoints, request/response formats, and authentication requirements.
    • The docs/ folder also contains project-related certificates (CSS and HTML reports and also checklists of usability and Accessibility).

Features Implemented

  • Complete authentication system with OAuth
  • User profiles with customizable bios and avatars
  • Social feed with posts, reviews, and comments
  • Friend system with requests and management
  • Real-time messaging between users
  • Media library (movies, books, music)
  • Favorites and user media preferences
  • Groups with membership management
  • Advanced search across users, posts, comments, and groups
  • Like system for posts and comments
  • Mention system with @ tagging
  • Notification system for interactions
  • Admin panel with moderation tools
  • Report system for content moderation
  • Block/unblock with appeal mechanism
  • Responsive design with TailwindCSS
  • Image upload and storage
  • Email notifications for password reset

Development Team

This project was developed by:

Course Information

Developed for the LBAW (Database and Web Applications Laboratory) course at FEUP (Faculty of Engineering, University of Porto).

Course: LBAW 2024/2025
Project Code: lbaw2544

About

junto. is a social platform that connects people through their shared love of music, films, and books, fostering cultural exchange and meaningful discussion.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors