WriterAI is an AI based content writing tool that helps users easily write high quality emails, blogs, letters, thesis and other stuff.

Overview

WriterAI

WriterAI is an AI based content writing tool that helps users easily write high quality emails, blogs, letters, thesis and other stuff. One can also share their project with others and work as a team.

This project is developed by Team 404 for Hashnode x PlanetScale hackathon. This team comprises of Ishant and Vaibhav.

About ๐ŸŽฏ

WriterAI is a web app where a user can make use of artificial intelligence to quickly write high quality content. Just provide the AI with a sample input of one to two lines and the AI will generate 5 different paragraphs for you!

Blog โœ๏ธ

To know more about how we built this project, read my article here:
https://ishantchauhan.hashnode.dev/writerai-a-revolutionary-ai-based-content-writing-tool

Demo

You can experience the power of WriterAI by visiting: https://writerai.netlify.app/

Video Demo

Here is a short video on how to use WriterAI

Insights Into Project ๐Ÿ”Ž

WriterAI Features ๐Ÿ”ฅ

  • Auto Text Completion - Generates upto 120 words with an input of just 5 words
  • Inbuilt Text Editor - For writing your blogs, emails, thesis, letters and other stuff
  • Project Sharing - You can share your project with unlimited number of users and work in teams
  • Markdown Support - You can add images, tables, hyperlinks and code snippets in your projects by using markdown
  • Project Download - You can download your projects in JSON, XML and Markdown format
  • User Authentication - Supports Email-Password authentication and Gmail authentication
  • User Authorization - WriterAI keeps on validating the user's auth tokens every 5 minutes automatically

๐Ÿ“ธ Screenshots ๐Ÿ’ป

๐Ÿ“ธ Screenshots ๐Ÿ“ฑ

Technical details ๐Ÿ’ก

  • The frontend of WriterAI is created using technologies like CSS, ReactJS and MaterialUI. WriterAI is highly responsive and is tested on all popular browsers like Chrome, Safari and Opera Mini. For handling the react state\s, ContextAPI is used. The frontend code is highly structured and BEM convention is followed throughout the entire CSS code.

  • The backend of WriterAI is built using Ktor which is a Kotlin based framework for writing server side code! For storing the user's data, we have used PlatenScale which is a highly scalable MySQL database platform which supports horizontal sharding and unlimited connections. For authentication, we have used Firebase SDK. And for deployment of the backend, we have used Linode.

Setup [Frontend] ๐Ÿ“

If you want to clone this project and customize it further, you need to do a couple of tasks first:

  • Clone this project. You can directly download the source code, or you can use the CLI in terminal
  • Once successful, open your terminal in the project folder and write npm install
  • After this, in the root folder of the project, create a new file with the exact name of ".env"
  • In the .env file, write:

REACT_APP_FIREBASE_API_KEY=XXXXXXXX
REACT_APP_FIREBASE_AUTH_DOMAIN=XXXXXXXX
REACT_APP_FIREBASE_PROJECT_ID=XXXXXXXX
REACT_APP_FIREBASE_STORAGE_BUCKET=XXXXXXXX
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=XXXXXXXX
REACT_APP_FIREBASE_APP_ID=XXXXXXXX
REACT_APP_FIREBASE_MEASUREMENT_ID=XXXXXXXX
REACT_APP_AI_API_KEY=XXXXXXXX
REACT_APP_BASE_URL=XXXXXXXX
  • Get the value of first 7 variables by creating a firebase account, enabling user authentication and downloading the firebase configuration json file
  • Get the API key to enable AI support from OpenAI
  • Get a domain and enable SSL on it in order to use it. Not doing so may result in CORS errors. See backend documentation for more.
  • Save the file and then in frontend and backend terminal, write npm start and enjoy the project :)

Built With [Frontend] ๐Ÿ› 

  • GPT-3 AI - Generative Pre-trained Transformer 3 is an autoregressive language model that uses deep learning to produce human-like text
  • ReactJS - ReactJS is a javascript library created by Facebook. This library lets you create beautiful web pages in couple of minutes
  • MaterialUI - MaterialUI is a ReactJS library developed by google that lets you create beautiful UI elements in a quick go!
  • React Router DOM - React Router DOM is a NPM package that easily lets you tell the app about which web page or screen component to render depending upon a particular URL
  • Lottie React - Lottie React is an npm package that lets you render Lottie JSON animations on the web page
  • Axios - Axios is an NPM package that lets you easily send HTTP requests to a particular URL
  • JsonWebToken - It is a package that lets you make use of JWT authentication in your app
  • Firebase - Firebase is a platform developed by Google for adding backend functionalities like authentication in projects.

Project Structure [Frontend] ๐Ÿ“‚

# Root Package
.
โ”œโ”€โ”€ src                 # Our core frontend code consisting of all views and react components
|   โ”œโ”€โ”€ components      # Contains UI component files for dialog boxes, notifications etc
|   โ”œโ”€โ”€ other           # Contains files for constant variables and placeholder data
|   โ”œโ”€โ”€ components      # Contains UI component files for dialog boxes, snackbars, single user in inbox etc
โ”‚   โ”œโ”€โ”€ pages           # Contains files to represent the screen for each route like LandingPage.js for '/', HomePage.js for '/home' etc
โ”‚   โ”œโ”€โ”€ res             # Contains resource files for animations
โ”‚   โ”œโ”€โ”€ util            # Contains utility functions for formatting strings and dates
โ”‚   โ”œโ”€โ”€ security        # Contains firebase configuration, firebase methods and other security related functions
โ”‚   โ”œโ”€โ”€ style           # Contains configurations for MaterialUI setup
โ”‚   โ”œโ”€โ”€ App.css         # CSS file to provide a common styling to our app such as font family and box sizing
โ”‚   โ”œโ”€โ”€ index.css       # Currently of no use, however you can use it to provide a global style to your app
โ”‚   โ”œโ”€โ”€ App.js          # Our main frontend ReactJS file that is executed when server starts
โ”‚   โ”œโ”€โ”€ AppContext.js   # ReactJS ContextAPI file to allow all components access a particular react state easily
โ”‚   โ””โ”€โ”€ index.js        # A ReactJS file to render all the data on web page
โ””โ”€โ”€

Production Build ๐Ÿ’ป

  • To build the project for production purpose, open the frontend folder and write npm run build
  • Once the build is completed, simply write npm start to run the website in production mode

Setup [Backend] ๐Ÿ› 

For this, you can refer to the Backend Repository of WriterAI to setup and deploy the backend

Attribution

The project is built using PlanetScale for the Hashnode X PlanetScale Hackathon.

Contact

For any queries, you can mail me at [email protected]

You might also like...

Modular Redis connection and PUBSUB subscription manager for node. Easily extendable. Built for performance, powered by ioredis.

RediBox Redis connection and PUBSUB subscription manager for node. Built for performance, powered by ioredis (for now). Maintained by TeamFA. What is

Dec 15, 2022

Take screenshots easily in multidisplay setups!!

Take screenshots easily in multidisplay setups!!

Best Screenshot App for people with multiple Displays. here's the best way to take screenshot of whole displays in a single click: ๐Ÿ‘‡๐Ÿฝ Download the b

Jul 21, 2022

๐Ÿ“„ Easily implement pagination into your Knex.js project.

knex-pagination Easily implement pagination into your application. Usage const knex = require('knex'); const paginate = require('knex-pagination'); co

Apr 16, 2022

Fast and advanced, document based and key-value based NoSQL database that able to work as it is installed.

Fast and advanced, document based and key-value based NoSQL database that able to work as it is installed.

About Fast and advanced, document based and key-value based NoSQL database that able to work as it is installed. Features NoSQL database Can be run as

Dec 7, 2022

Fast and advanced, document-based and key-value-based NoSQL database.

Fast and advanced, document-based and key-value-based NoSQL database.

Contents About Features Installation Links About Fast and advanced, document-based and key-value-based NoSQL database. Features NoSQL database Can be

Dec 7, 2022

Bulk follow GitHub users using a NodeJS script.

Github bulk follow Getting Started Prerequisites Clone the project to your local environment: git clone [email protected]:farid-ouachrar/github-bulk-

Sep 27, 2021

Azure Data Studio is a data management tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.

Azure Data Studio is a data management tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.

Azure Data Studio is a data management tool that enables working with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.

Dec 31, 2022

project overview tool, used to analyze the amount of code, the number of files, code statistics and so on.

project overview tool, used to analyze the amount of code, the number of files, code statistics  and so on.

pot z-pot is a project overview tool, used to analyze the amount of code, the number of files, code statistics and so on. ้กน็›ฎๆฆ‚่ฟฐๅทฅๅ…ท๏ผŒ็”จไบŽๅˆ†ๆžไปฃ็ ้‡ใ€ๆ–‡ไปถๆ•ฐใ€ไปฃ็ ็ปŸ่ฎก็ญ‰ใ€‚ ๅฟซ้€Ÿ

Aug 10, 2022
Owner
Ishant Chauhan
I love solving real world problems using my programming skills!
Ishant Chauhan
A Gmail Clone which built with ReactJS and Redux. You can sign in with your Google Account, compose a new e-mail and send realtime emails to the project.

Gmail Clone with ReactJS A Gmail Clone that you can sign in with your Google Account, compose a new e-mail and send realtime emails to the project. Cl

ร–zge CoลŸkun Gรผrsucu 49 Nov 14, 2022
around nestjs, with prisma and some graphql lib,write less code,create power api

ไป‹็ป ่ฟ™ๆ˜ฏไธ€ไธช prisma + nestjs + graphql ็š„้›†ๆˆ็คบไพ‹ ๅฏนไบŽๅผ€ๅ‘่€…ๆฅ่ฏด๏ผŒ็‰นๅˆซๆ˜ฏไฝฟ็”จ graphql ็š„ๆ—ถๅ€™๏ผŒๅช้œ€่ฆๅ†™้žๅธธๅฐ‘้‡็š„ไปฃ็ ๅณๅฏๅฎŒๆˆๆ•ฐๆฎ็š„ๅ„็งๆ“ไฝœ๏ผŒๅŒๆ—ถไนŸๆ”ฏๆŒๆŽฅๅฃ้€ไผ ใ€‚ ๅผ€ๅ‘&้ƒจ็ฝฒ ๆœฌๅœฐๅผ€ๅ‘ npm run start:dev swagger ๅœฐๅ€๏ผšhttp://loc

่Š‹ๅคด 26 Nov 24, 2022
A transparent, in-memory, streaming write-on-update JavaScript database for Small Web applications that persists to a JavaScript transaction log.

JavaScript Database (JSDB) A zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to

Small Technology Foundation 237 Nov 13, 2022
Execute one command (or mount one Node.js middleware) and get an instant high-performance GraphQL API for your PostgreSQL database!

PostGraphile Instant lightning-fast GraphQL API backed primarily by your PostgreSQL database. Highly customisable and extensible thanks to incredibly

Graphile 11.7k Jan 4, 2023
A high performance MongoDB ORM for Node.js

Iridium A High Performance, IDE Friendly ODM for MongoDB Iridium is designed to offer a high performance, easy to use and above all, editor friendly O

Sierra Softworks 570 Dec 14, 2022
An open letter against Apple's new privacy-invasive client-side content scanning.

Apple Privacy Letter An open letter against Apple's new privacy-invasive client-side content scanning technology. View the letter Sign the letter This

Nadim Kobeissi 655 Dec 19, 2022
Kysely dialects, plugins and other goodies for SurrealDB

kysely-surrealdb Kysely dialects, plugins and other goodies for SurrealDB. SurrealQL is based on SQL, so why not? Installation NPM 7+ npm i kysely-sur

Igal Klebanov 16 Jan 6, 2023
GraphQL Projects Study Cases with TypeScript/Node.js & Other Stacks

GraphQL Projects Study Cases with TypeScript/Node.js & Other Stacks A real world projects with intention of studying a little bit more about GraphQL w

Glaucia Lemos 15 Dec 5, 2022
This library helps implement caching using Cloudflare Workers KV

With a few lines of code, you can control the execution of functions that you want to cache for speed, store them in the cache, and skip execution of the function if the cache exists.

AijiUejima 8 Oct 20, 2022
Share an abstract-level database over the network or other kind of stream.

many-level Share an abstract-level database over the network or other kind of stream. The successor to multileveldown. If you are upgrading, please se

Level 15 Mar 27, 2022