Skip to content

Flavio-Ore/modern-snapgram

Repository files navigation

snapgram-logo

My own version of the original Snapgram project by Adrian Hajdin

Todo: New key Features developed by me

  • Integrated chat
  • Upload up to 10 multimedia contents per post
  • Improved UI with new layouts, components, interactions and animations
  • Online/offline status updated only at login/logout
  • Follow/unfollow users functionality
  • New Software Architecture
  • Testing: Unit, Integration, End-to-End, Performance
  • Dockerize the project for easier deployment
  • Better Appwrite Authentication, email verification

Table of Contents πŸ“‹

  1. Preview
  2. The idea
  3. Database Design
  4. The design
  5. The tools
  6. Local Setup
  7. Contacts
  8. Links

Login and Signup

SCREEN-SIGN_UP

Explore posts

SCREEN-EXPLORE

Create posts and search users

SCREEN-CREATE_POSTS SCREEN-PEOPLE

Start chatting

image

Save your favourite posts

SCREEN-SAVES

This is so far the biggest project I've worked on by myself, besides the forums that have been very useful when I was confused, I've learned and reviewed a lot of concepts and technologies, I hope you find it useful and learn something new from it too!.

This project came up after finishing the video tutorial Build and Deploy a Full Stack Social Media App | React JS, Appwrite, Tailwind CSS, React Query After watching it, I continued with the second part of the tutorial on his blog JavaScript Mastery Blog . In which I implemented many other features and had complications with others. Finally I tried to implement the original design made in Figma.

Database Design

Appwrite uses a mix between NOSQL and SQL databases. It uses document-based queries as minimum units of information.

See more here

DB Schema

The design was made by Adrian Hajdin and it's available on Figma. The design is very well done and I tried to implement it as best as I could, but I had some difficulties with the design, so I made my own designs :^).

Originally, the project was built using the following technologies:

Frontend

Design

Backend

This project uses Backend as a Service (BaaS) for the backend. The BaaS provider used is Appwrite.

Follow these steps to set up the project locally on your machine.

Prerequisites

Make sure you have the following installed on your machine:

Cloning the Repository

# Cloning via HTTPS
git clone https://github.com/Flavio-Ore/Snapgram-2.git
# Proyect dir
cd social_media_app

Dependencies

Install the project dependencies using your preferred package manager:

  npm install
  yarn install
  pnpm install

Set Up Environment Variables

Create a new file named .env in the root of your project and add the following env variables:

Note

Consider using the database schema to guide you.

VITE_APPWRITE_PROJECT_ID=""
VITE_APPWRITE_ENDPOINT=""
VITE_APPWRITE_DATABASE=""
VITE_APPWRITE_STORAGE_POSTS_FILES=""
VITE_APPWRITE_STORAGE_PROFILE_IMAGES=""
VITE_APPWRITE_DATABASE_COLLECTION_SAVES_ID=""
VITE_APPWRITE_DATABASE_COLLECTION_USERS_ID=""
VITE_APPWRITE_DATABASE_COLLECTION_POSTS_ID=""
VITE_APPWRITE_DATABASE_COLLECTION_MESSAGES_ID=""
VITE_APPWRITE_DATABASE_COLLECTION_FOLLOWERS_ID=""
VITE_APPWRITE_DATABASE_COLLECTION_MESSAGE_ID=""
VITE_APPWRITE_DATABASE_COLLECTION_CHAT_MEMBER_ID=""
VITE_APPWRITE_DATABASE_COLLECTION_CHAT_ROOM_ID=""

Replace the placeholder values with your actual Appwrite credentials. You can obtain these credentials by signing up on the Appwrite website.

Running the Project

See the package.json file for the available scripts. You can run the project using the following commands:

  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
    "lint-standard": "standard && node main.tsx",
    "preview": "vite preview"
  }

Use the "dev" script to start the development server on your local machine:

  npm run dev
  yarn run dev
  pnpm run dev

Open http://localhost:5173/ in your browser to view the project.

If there's anything you'd like to add or change, please feel free to open an issue or a pull request. I'd love to hear your feedback and suggestions.

Also, you can contact me on discord, here's my user id: ph4lanx :)

  • Assets used in the project are here

About

An custom version of the original Snapgram created by @adrianhajdin.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages