Git Product home page Git Product logo

social-network-api's Introduction

Social Network API

Mock up

image

Description

This project is a RESTful API for a social network application. It allows users to create accounts, share their thoughts, add friends, and react to thoughts.

Installation Instructions

  1. Clone the repository to your local machine.
  2. Navigate to the project directory.
  3. Install dependencies using the command npm install.
  4. Set up a MongoDB database.
  5. Configure environment variables (if any).
  6. Start the server using the command npm start.

Usage Instructions

  • Use HTTP client software like Postman or curl to interact with the API endpoints.
  • Refer to the API Routes section for available endpoints and their functionalities.

API Routes

User Routes

  • GET /api/users: Get all users.
  • GET /api/users/:id: Get a user by ID.
  • POST /api/users: Create a new user.
  • PUT /api/users/:id: Update a user by ID.
  • DELETE /api/users/:id: Delete a user by ID.
  • POST /api/users/:userId/friends/:friendId: Add a friend to a user's friend list.
  • DELETE /api/users/:userId/friends/:friendId: Remove a friend from a user's friend list.

Thought Routes

  • GET /api/thoughts: Get all thoughts.
  • GET /api/thoughts/:id: Get a thought by ID.
  • POST /api/thoughts: Create a new thought.
  • PUT /api/thoughts/:id: Update a thought by ID.
  • DELETE /api/thoughts/:id: Delete a thought by ID.
  • POST /api/thoughts/:thoughtId/reactions: Add a reaction to a thought.
  • DELETE /api/thoughts/:thoughtId/reactions/:reactionId: Remove a reaction from a thought.

Technologies Used

  • Node.js
  • Express.js
  • MongoDB
  • Mongoose
  • Validator

License

This project is licensed under the MIT License.

Contact Information

For any inquiries or issues, please contact Jayden Taylor at [email protected].

social-network-api's People

Contributors

jay1194 avatar

Watchers

 avatar

social-network-api's Issues

Create the Thought Model + Reaction Schema and Set up API routes:

Thought

ThoughtText

  • String
  • Required
  • Must be between 1 and 280 characters

createdAt

  • Date
  • Set default value to the current timestamp
  • Use a getter method to format the time stamp on query

username (the user that created this thought)

  • String
  • Required

reactions (These are like replies)

  • Array of nested documents created with the reactionSchema

Schema Settings

  • Create a virtual called reactionCount that retrieves the length of the thought's reactions array field on query.

Reaction (SCHEMA ONLY)

reactionId

  • Use Mongoose's ObjectId data typ
  • Default value is set to a new ObjectId

Create The User Model and setup API routes:

User

username

  • String
  • Unique
  • Required
  • Trimmed
  • email

email

  • String
  • Required
  • Unique
  • Must match a valid email address(Mongoose validation)

thoughts

  • Array of _id values referencing the Thought model

friends

  • Array of _id values referencing the User model (self-reference)

Schema Settings
Create a virtual called friendCount that retrieves the length of the user's friends array field on query.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.