Giter Site home page Giter Site logo

clucker's Introduction

Clucker

Clucker is a text-based social media app where people can share short messages, called clucks, with the world. User's can create a custom profile, follow their friends, share their ideas and like other clucks.

Live website

Image of feed Image of cluck form Image of profile Image of followers list Image of login

Table of Contents

Tech Stack

Frontend:

  • Next.js and TypeScript: The frontend is built using Next.js, a popular React framework, with TypeScript for strong typing and a better dev experience.
  • Tailwind CSS and shadcn/ui: I used TailwindCSS for custom styling built ontop of components designed at shadcn

Backend

  • Django Rest Framework: The backend uses the Django Rest Framework for handling CRUD operations with the SQLite database.
  • NextAuth.js: To ensure secure sign-in authentication, I integrated NextAuth.js, enabling Google sign-in and JWT (JSON Web Token) handling.

Hosting:

  • AWS Elastic Beanstalk: The backend is hosted on AWS Elastic Beanstalk
  • Vercel (Free Tier): For the frontend, I used Vercel's free tier hosting

Installation

Django Backend Setup

  1. Clone the repository:

    git clone https://github.com/Owen-Allen/clucker.git
    cd clucker
  2. Create and activate a virtual environment for Django:

    python3 -m venv venv
    source venv/bin/activate
  3. Install required Python packages:

    pip install -r requirements.txt
  4. Create an empty database:

    python manage.py migrate
  5. Start the backend server:

    python manage.py runserver

    Access it at http://127.0.0.1:8000/

  6. To access the admin portal, create a superuser:

    python manage.py createsuperuser

    Access the admin portal at http://127.0.0.1:8000/admin.

Next.js Frontend Setup

  1. Navigate to the frontend directory:

    cd frontend
  2. Ensure you have Node.js version 16.14.0 or above. If not, I recommend using nvm.

  3. Install required Node.js modules:

    npm install
  4. Run the frontend in development mode:

    npm run dev

    Access it at http://localhost:3000/

  5. Create an OAuth 2.0 Client in the Google Cloud Console. I recommend following this video for a simple walkthrough.

  6. Create a .env file in the ~/clucker/frontend directory with the following variables:

    GOOGLE_CLIENT_ID=YOUR_CLIENT_ID
    GOOGLE_CLIENT_SECRET=YOUR_CLIENT_SECRET
    NEXTAUTH_SECRET=CREATE_A_NEXT_AUTH_SECRET
    NEXTAUTH_URL=http://localhost:3000
    DB_HOST=http://127.0.0.1:8000
  7. Run the application again using:

    npm run dev

    You can now create an account and start Clucking!

Future plans

  • Backend refactor for streamlined syntax
  • Cluck delete feature
  • Reply feature implementation on frontend
  • Backend migration to planetscale.com for free backend hosting

Author

  • I'm Owen. I'm a Software Developer and a Carleton Computer Science graduate. You reach me by email me at [email protected]

Acknowledgments

  • Special thank you to Nina Tostevin for coming up with the name of the app and encouraging me to pursue this project.

Resources

Tools and Libraries

Helpful guides and relevant discussions

clucker's People

Contributors

owen-allen avatar

Stargazers

Max Dobrei avatar

Watchers

 avatar

clucker's Issues

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.