Skip to content

rsayyed591/photopia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Έ Photopia

Live Demo React Node.js MySQL License

"Capture memories. Organize effortlessly."

Photopia is a full-stack photo storage platform that allows users to securely upload, manage, and organize personal images through a modern web interface powered by React, Express, MySQL, and JWT authentication.


🌐 Live Demo

Frontend: https://photopia-one.vercel.app

Note

The frontend is publicly available on Vercel. Backend services are intended for local development.


πŸ“– About

Photopia is a personal full-stack project focused on secure image management.

Users can register, authenticate, upload images, and access their personal media through a clean and responsive interface. The project demonstrates secure authentication, protected API routes, file uploads, and relational database management using MySQL.


✨ Features

πŸ‘€ Authentication

  • User Registration
  • Secure Login
  • JWT Authentication
  • Protected Routes
  • Password Management

πŸ“Έ Media Management

  • Upload Images
  • Personal Gallery
  • User-specific Storage
  • Secure File Access

🎨 User Experience

  • Responsive Design
  • Clean Interface
  • Dark Mode
  • Mobile Friendly

πŸ”’ Security

  • JWT Authentication
  • Protected API Endpoints
  • Password Hashing
  • Authorization Middleware

πŸ–₯️ User Interface

Photopia provides a minimal and responsive interface designed to make uploading and managing photos simple across desktop and mobile devices.

Photopia UI


πŸ—οΈ System Architecture

The project follows a traditional client-server architecture with clear separation between presentation, business logic, authentication, and data persistence.

Photopia Architecture

Architecture Overview

Browser
   β”‚
React + Vite
(Client)
   β”‚
Axios
   β”‚
Express API
   β”‚
JWT Middleware
   β”‚
Controllers
   β”‚
MySQL Database

Components

Client

  • React
  • React Router
  • Axios
  • Tailwind CSS

Backend

  • Express.js
  • JWT Authentication
  • File Upload Controller
  • User Management

Database

  • MySQL
  • Users
  • Uploaded Files

πŸ› οΈ Technology Stack

Category Technology
Frontend React, Vite, Tailwind CSS
Backend Node.js, Express.js
Database MySQL
Authentication JWT
HTTP Client Axios
Deployment Vercel

πŸ“‚ Project Structure

photopia/
β”‚
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ controllers/
β”‚   β”œβ”€β”€ models/
β”‚   β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ database_setup.sql
β”‚   β”œβ”€β”€ index.js
β”‚   └── package.json
β”‚
β”œβ”€β”€ client/
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”œβ”€β”€ logo.png
β”‚   β”‚   β”œβ”€β”€ ui.png
β”‚   β”‚   └── diagram.png
β”‚   β”‚
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚   └── main.jsx
β”‚   β”‚
β”‚   β”œβ”€β”€ package.json
β”‚   └── vite.config.js
β”‚
β”œβ”€β”€ LICENSE
└── README.md

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • MySQL Server

Clone Repository

git clone https://github.com/rsayyed591/photopia.git

cd photopia

Database Setup

Run the SQL script located in:

backend/database_setup.sql

This creates the required database tables for authentication and file management.


Backend Setup

cd backend

npm install

Create a .env file.

JWT_SECRET=your_secret_key

DB_HOST=localhost

DB_USER=root

DB_PASSWORD=your_password

DB_NAME=user_auth_system

Run the server.

npm start

Frontend Setup

cd client

npm install

Create a .env file.

VITE_API_URL=http://localhost:5000

Run the development server.

npm run dev

βš™οΈ Environment Variables

Backend

JWT_SECRET=
DB_HOST=
DB_USER=
DB_PASSWORD=
DB_NAME=

Client

VITE_API_URL=http://localhost:5000

πŸ” API Endpoints

Authentication

Method Endpoint
POST /api/register
POST /api/login
POST /api/change-password

Files

Method Endpoint
POST /api/upload
GET /api/files

πŸ’‘ Roadmap

  • Cloud Storage (Cloudinary / AWS S3)
  • Album Management
  • Image Search
  • Drag & Drop Uploads
  • Image Compression
  • Shareable Links
  • Profile Settings
  • Docker Support

🀝 Contributing

Contributions are welcome.

  1. Fork the repository.

  2. Create a feature branch.

git checkout -b feature/amazing-feature
  1. Commit your changes.
git commit -m "feat: add amazing feature"
  1. Push your changes.
git push origin feature/amazing-feature
  1. Open a Pull Request.

πŸ‘¨β€πŸ’» Author

Rehan Sayyed


πŸ“„ License

This project is licensed under the MIT License.

See the LICENSE file for more information.


⭐ Enjoying Photopia?

If you found this project useful, consider giving it a star.

Made with ❀️ by Rehan Sayyed

About

A full-stack photo storage and sharing application built using React, Node.js, MySQL, and styled with Tailwind CSS. Photopia allows users to securely upload, store, and share their photos with a clean and modern user interface.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors