logo

Picverse platform

Picverse Github


1. Project overview:

Picverse is a cloud-based social networking platform that empowers creative individuals to share, discover, and interact around inspiring visual content. Inspired by platforms like Pinterest, Picverse focuses on community-driven media sharing with modern features for collaboration and content discovery.

Users can post and explore images, videos, and AI-generated art across a wide range of creative topics from photography and fashion to digital design and animation. The platform emphasizes performance, security, and real-time interactivity.


2. Key Features:

  • Decentralized Cloud Storage: Ensures scalability, data redundancy, and global access to media files.
  • AI-enhanced Editing: Users can apply smart filters, auto-enhancements, and generate content with AI tools.
  • Smart Discovery: Personalized feeds powered by AI recommendations based on user preferences and trending content.
  • Content Moderation: Integrated AI models automatically detect and filter inappropriate or harmful content.
  • Realtime Interaction: Chat, comments, and live notifications promote dynamic communication between users.
  • Boards & Collections: Organize favorite content into customizable collections and themed boards.
  • Secure Authentication: OAuth2 and JWT with refresh token mechanism ensure safe and smooth login, with support for social sign-in and Two Factor Authentication.

Built with a modern stack (Next.js, NestJS, MongoDB, Redis, Qdrant), Picverse delivers a fast, interactive, and engaging experience. It’s designed not just for browsing content but for building a thriving creative ecosystem where users can connect, collaborate, and grow together.


3. Tech stack:

Fluent

Docker

Fluent

JWT

Fluent

MongoDB

Fluent

NestJS

Fluent

Next.js

Fluent

Redis

Fluent

TypeScript

Good

Nginx

Good

Tailwind CSS

Good

Ubuntu OS


3. Preparing

First step:

First. We need clone source code from repository (Repository include source code of web server, analytics server, client and env file of them)

git clone https:/github.com/duongtrungnguyenrc/picverse.git

Environment requirement

  • Docker (version 27.4.0 or later)
  • Docker compose (version 2.32.4 or later)
  • Node JS (version 20.14.0 or later)
  • MongoDB (Optional)
  • Redis server (Optional)
  • Free port: 3000, 3001

NestJS Server

Before running the NestJS server, make sure you have the required environment variables set up.

  1. Create

    .env
    file:

    touch .env
  2. Add the following configuration to your

    .env
    file:

    # APP
     APPLICATION_RUNNING_PORT=
     CLIENT_ORIGIN=
    
     # MONGO DATABASE
     MONGO_URI=
     MONGO_PRIMARY_NAME=
     MONGO_CLOUD_NAME=
     MONGO_REPLICA_SET=
     MONGO_READ_PREFERENCE=
    
     # REDIS
     REDIS_URL=
     REDIS_TTL=
    
     # JWT
     JWT_ACCESS_SECRET=
     JWT_REFRESH_SECRET=
     JWT_ACCESS_TTL=
     JWT_REFRESH_TTL=
    
     # Mailer
     MAILER_USER=
     MAILER_PASSWORD=
     MAILER_HOST=
     MAILER_PORT=
    
     # OAuth
     OAUTH_CLIENT_ID=
     OAUTH_CLIENT_SECRET=
     OAUTH_CALLBACK_URL=
    
     # Push notification
     NOTIFICATION_PUBLIC_KEY=
     NOTIFICATION_PRIVATE_KEY=
    
     # Fcm
     FCM_PROJECT_ID=
     FCM_CLIENT_EMAIL=
     FCM_PRIVATE_KEY=
    
     # Client
     CLIENT_URL=
     CLIENT_DOMAIN=
    
     ############################################################################
     ## CLOUD STORAGE PROVIDER PLATFORM ##
    
     # CLIENT REDIRECT
     CLIENT_CLOUD_CALLBACK_URL=
    
     # Dropbox
     DROPBOX_APP_KEY=
     DROPBOX_APP_SECRET=
     DROPBOX_CALLBACK_URL=
    
     # Drive
     DRIVE_CALLBACK_URL=

Next JS client

Before running the Next.js client, you must set up the environment variables for external services.

  1. Create

    .env
    file:

    touch .env
  2. Add the following configuration to your

    .env
    file:

    NEXT_PUBLIC_API_SERVER_ORIGIN=
    
     # AUTH
     NEXT_PUBLIC_ACCESS_TOKEN_PREFIX=
     NEXT_PUBLIC_REFRESH_TOKEN_PREFIX=
     NEXT_PUBLIC_ENCRYPT_SECRET=
     NEXT_PUBLIC_ENCRYPT_ALGORITHM=
    
     # CLOUDINARY
     NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=
     NEXT_PUBLIC_CLOUDINARY_API_KEY=
     NEXT_PUBLIC_CLOUDINARY_API_SECRET=
     NEXT_PUBLIC_CLOUDINARY_API_BASE_URL=
     NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET=

Start project

With Docker compose:

To run project with Docker compose, run command:

docker-compose up --build -d

With Local Machine:

To run project on your local machine (without Docker), follow these steps:

  1. Install dependencies:

Access folder with

cd
command and run this command from all server and client to download node package:

For server:

cd picverse-server
npm install

For client:

cd picverse-web
npm install
  1. Config data layer:
chmod +x ./scripts/local-setup.sh
sh ./scripts/local-setup.sh
  1. Run project

For server:

cd picverse-server
npm run start

For client:

cd picverse-web
npm start

4. Preview

Home page

Login page

Smart Image editor

Cloud page