Skip to content

aadeshkulkarni/figuringout

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

Figuringout.Life

A Fullstack Javascript blog with Generative AI!
Explore the docs »

View App · Report Bug · Request Feature

About The Project

Screenshot 2024-06-02 at 6 32 27 AM

A React frontend and Cloudflare workers backend application offering features that replicate Medium, the popular blogging platform.

Features:

  • Token based Authentication.
  • Create, Read, Update, Delete Blogs.
  • Bookmark, Like, Search, Filter Blogs.
  • Autosave blog while writing.
  • User profiles.
  • Topics.
  • Subscribe profiles.
  • Comment.

Unique Features:

  • Generate Blog using AI.
  • Chat with AI to deepen your understanding around a particular blog.
  • Voice over for blogs, so you can listen to blogs while working out / having food.

(back to top)

Technologies & Libraries

React Cloudflare Zod Typescript Prisma Postgres

(back to top)

Project Structure

  • Backend: Contains server-side code and logic.
  • Common: Shared assets and modules used by frontend and backend. (NPM Library)
  • Frontend: Contains client-side code and logic.

Local Setup

Backend

Pre-requisities:
  • Create a copy of .env.example and name the file .env
  • Set up Postgres DATABASE_URL in .env file. You can get a free PostgreSQL connection string from Aiven.io.
  • Set up Prisma connection pool DATABASE_URL in wrangler.toml file. You can get this for free from Prisma.
  • Set up JWT Secret JWT_SECRET in wrangler.toml file. This can be any value.
cd backend
npm install
npm run prisma:migrate
npx prisma generate
npm run dev

Note: wrangler.toml is the environment configuration file for a serverless backend. .env is used by Prisma for connection pooling. Ensure you configure both environment files accordingly.

Frontend

  • Navigate into the frontend directory using
cd frontend
npm install
npm run dev

Note: frontend/src/config.ts contains BACKEND_URL. If you need your frontend to point to local backend server, uncomment export const BACKEND_URL = "http://localhost:8787".

Running Frontend and Backend Concurrently

To make the developer experience smoother, you can now run both the frontend and backend simultaneously using a single command from the project root.

Steps:
  • Ensure you have project root folder. install packages with
    npm install
  • Insall both frontend and backend pakages with
    npm install:all
  • Now you can simply run:
    npm run dev
    This command will start both the frontend and backend servers simultaneously.

For additional customization options and detailed information, please refer to the concurrently documentation.

AI based Article content generation

  • set FF_ENABLE_AI = true in config.ts
  • set OPENAI_API_KEY in wrangler.toml file in the backend. (https://platform.openai.com/api-keys)
  • The feature is enabled only when title is atleast 10 characters long.

Contributing

We welcome contributions from the community! To contribute, follow these steps:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature/[feature-title]).
  3. Make your changes and commit them (git commit -am 'Add brief meaningful commit message').
  4. Push to the branch (git push origin feature/[feature-title]).
  5. Create a new Pull Request.

For major changes, please open an issue first to discuss what you would like to change.

Read our contribution guidelines for more details.

🤝 Contributors

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Aadesh Kulkarni - [email protected]

Project Link: https://github.com/aadeshkulkarni/medium-app

Discord: [https://discord.gg/TmRYQhca](https://discord.gg/JtTQkzFY89)

(back to top)