/Type-writer

A documenting web application for programmers with the support of many modern techniques to make documenting easier and faster. Type-writer is also well equipped with version control to keep a track record for all saved versions of a file in the cloud.

Primary LanguageJavaScriptMIT LicenseMIT

TYPE-WRITER

size license

Short Brief

Type-writer is a documenting web application with the support of many modern techniques to make documenting easier and faster. The web application itself contains clean and interactive UI making it easier to navigate. Some of the most promising features include markdown editing, copy pasting of images and resizing, mathematical equation formatting, syntax highlighter for code blocks etc. The application also contains user authentication through login/sign-up feature. Type-writer is also well equipped with version control to keep a track record for all saved versions of a file in the cloud. Users are also given choices in 3 different formats to download their files in local environment (i.e PDF format, text format, code block format).

Contents:


✊ About

Type-writer is a documenting web application that supports markdown editing, copy pasting images etc.

Get youtube demo here


👨‍💻 Getting started

This section will work you through how you can get started with the project.

Directory Layout

.
├── Backend
│   │  
│   ├── Controllers
│   │
│   ├── Models
│   │
│   ├── middlewares
│   │
│   ├── Routes
│   │
│   ├── Utils
│   │  
│   └── index.js
│ 
├── App
│   ├── public
│   └── src
│       ├── components
│       │   │  
│       │   ├── Assets
│       │   │  
│       │   ├── Downloading-formats
│       │   │  
│       │   ├── Primary Sidebar
│       │   │   
│       │   ├── Side bar routes
│       │   │  
│       │   ├── resizable
│       │   │ 
│       │   ├── Version-control
│       │   │ 
│       │   ├── Code-block
│       │   │ 
│       │   ├── User
│       │   │ 
│       │   └──sub-components
│       │              ├──page-padding
│       │              ├──check-boxes
│       │              ├──color-picker
│       │              └──yping-effect 
│       │    
│       ├── Pages
│       │     ├── Main  
│       │     └──Home-page
│       │  
│       ├──  lib
│       │      ├── header
│       │      ├── horizontal-ruller.js
│       │      ├── lists.js
│       │      ├── node-delete.js
│       │      ├── paragraph.js
│       │      └── text-format.js 
│       │ 
│       ├──  Renders
│       │      ├── Format equation
│       │      ├── Code-block
│       │      └── image-capture
│       │ 
│       ├──  Actions
│       │ 
│       ├──  Constants
│       │ 
│       └──  Reducers
└── README.md

Run on your local server

You will need NodeJS, Git and MongoDB installed to run this project locally

  node@v10.16.0 or higher
  npm@6.9.0 or higher
  git@2.17.1 or higher

If you dont have MongoDB you use MongoDB Atls

  1. Clone the repo
git clone https://github.com/Abusayid693/Type-writer.git
  1. Create a file called .env in the Backend directory of your project:

    Backend
    └──- Controllers
        - Models
        - .env         <-- create it here
        - .gitignore
        - index.js
        - package-lock.json
        - package.json
    
  2. Inside the .env file, add key DB_CONNECTION and assign your MongoDB local host or Mongo Atls like this, also add NODE_ENV and JWT_SECRET.

# .env
DB_CONNECTION = "YOUR_DB_LOCAL_HOST" 
# eg : mongodb://localhost/typewriter1 or mongodb+srv://"Your username ":" your password "....

JWT_SECRET = "YOUR_JWT_SECRET"
NODE_ENV = development

Warning: Treat your tokens like passwords and keep them secret. When working with the API, use tokens as environment variables instead of hardcoding them into your programs.

  1. Starting the server application.
cd Type-writer && cd Backend 
npm install
Nodemon index.js

This will start server on localhost:8000

  1. Starting the Client application.
cd Type-writer && cd App 
npm install
npm start

This will start client app on localhost:3000


🚀 Features

Heading tags

For heading user can use prefix "#"

Prefix " # "                                          -- For H1 tags
prefix " ## "                                         -- For H2 tags
prefix " ### "                                        -- For H3 tags
prefix " #### "                                       -- For H4 tags.  

user must press Space after entering prefix

Unordered Lists

prefix " - "                                          -- for Unordered Lists elements 

Ordered Lists

prefix " Numerical digits "                           -- for Ordered Lists elements   

user must press Space after entering prefix

The equation formatting features supports all Algebric, triagnometric and Matrices formatting, following with prefix " $ ".

  • Algebric equations

  • Tragnometric and equations

  • Matrices

prefix " --- "                                     --  for Horizontal lines

The coding blocks supports syntaxhighlighter for javascript code only ( will be updated in future versions).

 prefix " ''' "                                  -- for syntaxhighlighting editor


Type-writer supports copy pasting images over browsers and resize them accordingly.

  • Copy images over internet and paste them.
  • Resize them accoring to your need.

Customize background colours,text colours as per your need, the color palette also supports hex codes.

Version Control tracks and manage changes in your typewriter files,it keeps track of every modification to the files in our database hosted on the cloud , So user dont need to hustle over loosing their data. It also allows sharing of files with others for modification keeping the original version safe.

Gif here

The sidebar contains date and time of saved versions for iterating through different versions of your files

  • Choose your fonts - The fonts support can be furthur extended by adding additional fonts.

  • Get downloadable document

PDF Whole type-writer contents in pdf formats
Text Only text contents of the type-writer.
Code block Downloads coding blocks only in .js format


🧰 Tools & Packages

Client

Package Description version
axios Promise based HTTP client for the browser and node.js 0.21.1
React-redux A predictable state container for JavaScript applications 0.21.1
react-equation Used of displaying equations over webpages 0.2.1
react-resizable To make resizable react components 3.0.4
react-dropdown React dropdown menu 1.9.2
react-syntax-highlighter Used for syntaxhighlighting in coding blocks,texts etc 11.0.3
react-typed Typing annimation in react 1.2.0
file-saver provides downloadable formats of files 2.0.5
jsPDF A library to generate PDFs in JavaScript. 2.3.1
material-ui Customized React components 4.12.2
react-color color palette 2.19.3

Server

Package Description version
mongoose elegant mongodb object modeling for node.js 5.13.3
morgan HTTP request logger middleware for node.js 1.10.0
express Node.js web application framework for server side scripting 4.17.1
MongoDB a NoSQL database 4.4.3
bcryptjs A library to help you hash password 4.4.3
jsonwebtoken An implementation of JSON Web Tokens 8.5.1