• Stars
    star
    6,824
  • Rank 5,741 (Top 0.2 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created about 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ“ โ€Ž A web-based notes app for developers.

Coverage Status

A web-based notes app for developers. (Demo only)

Screenshot

Features

  • Plain text notes - take notes in an IDE-like environment that makes no assumptions
  • Markdown preview - view rendered HTML
  • Linked notes - use {{uuid}} syntax to link to notes within other notes
  • Syntax highlighting - light and dark mode available (based on the beautiful New Moon theme)
  • Keyboard shortcuts - use the keyboard for all common tasks - creating notes and categories, toggling settings, and other options
  • Drag and drop - drag a note or multiple notes to categories, favorites, or trash
  • Multi-cursor editing - supports multiple cursors and other Codemirror options
  • Search notes - easily search all notes, or notes within a category
  • Prettify notes - use Prettier on the fly for your Markdown
  • No WYSIWYG - made for developers, by developers
  • No database - notes are only stored in the browser's local storage and are available for download and export to you alone
  • No tracking or analytics - 'nuff said
  • GitHub integration - self-hosted option is available for auto-syncing to a GitHub repository (not available in the demo)

About

TakeNote is a note-taking app for the web. You can use the demo app at takenote.dev. It is a static site without a database and does not sync your notes to the cloud. The notes are persisted temporarily in local storage, but you can download all notes in markdown format as a zip.

Hidden within the code is an alternate version that contain a Node/Express server and integration with GitHub. This version involves creating an OAuth application for GitHub and signing up to it with private repository permissions. Instead of backing up to local storage, your notes will back up to a private repository in your account called takenote-data. Due to the following reasons I'm choosing not to deploy or maintain this portion of the application:

  • I do not want to maintain a free app with users alongside my career and other commitments
  • I do not want to request private repository permissions from users
  • I do not want to maintain an active server
  • I do not want to worry about GitHub rate limiting from the server
  • There is no way to batch create many files from the GitHub API, leading to a suboptimal GitHub storage solution

However, I'm leaving the code available so you can feel free to host your own TakeNote instance or study the code for learning purposes. I do not provide support or guidance for these purposes.

TakeNote was created with TypeScript, React, Redux, Node, Express, Codemirror, Webpack, Jest, Cypress, Feather Icons, ESLint, and Mousetrap, among other awesome open-source software.

Reviews

"I think the lack of extra crap is a feature." โ€” Craig Lam

Demo Development

Clone and install.

git clone [email protected]:taniarascia/takenote
cd takenote
npm i

Run a development server.

npm run client

Full Application Development (self-hosted)

Pre-Installation

Before working on TakeNote locally, you must create a GitHub OAuth app for development.

Go to your GitHub profile settings, and click on Developer Settings.

Click the New OAuth App button.

  • Application name: TakeNote Development
  • Homepage URL: http://localhost:3000
  • Authorization callback URL: http://localhost:3000/api/auth/callback

Create a .env file in the root of the project, and add the app's client ID and secret. Remove DEMO variable to enable GitHub integration.

CLIENT_ID=xxx
CLIENT_SECRET=xxxx
DEMO=true

Change the URLs to port 5000 in production mode or Docker.

Installation

git clone [email protected]:taniarascia/takenote
cd takenote
npm i

Development mode

In the development environment, an Express server is running on port 5000 to handle all API calls, and a hot Webpack dev server is running on port 3000 for the React frontend. To run both of these servers concurrently, run the dev command.

npm run dev

Go to localhost:3000 to view the app.

API requests will be proxied to port 5000 automatically.

Production mode

In the production environment, the React app is built, and Express redirects all incoming requests to the dist directory on port 5000.

npm run build && npm run start

Go to localhost:5000 to view the app.

Run in Docker

Follow these instructions to build an image and run a container.

# Build Docker image
docker build --build-arg CLIENT_ID=xxx -t takenote:mytag .

# Run Docker container in port 5000
docker run \
-e CLIENT_ID=xxx \
-e CLIENT_SECRET=xxxx \
-e NODE_ENV=development \
-p 5000:5000 \
takenote:mytag

Go to localhost:5000 to view the app.

Note: You will see some errors during the installation phase, but these are simply warnings that unnecessary packages do not exist, since the Node Alpine base image is minimal.

Seed data

To seed the app with some test data, paste the contents of seed.js into your browser console.

Testing

Run unit and component/integration tests.

npm run test

If using Jest Runner in VSCode, add "jestrunner.configPath": "config/jest.config.js" to your settings

Run Cypress end-to-end tests.

# In one window, run the application
npm run client

# In another window, run the end-to-end tests
npm run test:e2e:open

Contributing

TakeNote is an open source project, and contributions of any kind are welcome and appreciated. Open issues, bugs, and feature requests are all listed on the issues tab and labeled accordingly. Feel free to open bug tickets and make feature requests. Easy bugs and features will be tagged with the good first issue label.

View CONTRIBUTING.md to learn about the style guide, folder structure, scripts, and how to contribute.

Contributors

Thanks goes to these wonderful people:


Tania Rascia

๐Ÿ’ป ๐Ÿค” ๐Ÿ›

hankolsen

๐Ÿ’ป ๐Ÿ› โš ๏ธ

Joseph Perez

๐Ÿ’ป

Paul

๐Ÿ’ป โš ๏ธ

Martin Rosenberg

๐Ÿ’ป ๐Ÿ› ๐Ÿšง

Melissa

๐Ÿ’ป

Jason Towle

๐Ÿ’ป

Mark Erikson

๐Ÿค”

Alphonse Bouy

๐Ÿ›

dave2kb

๐ŸŽจ ๐Ÿค”

Devin McIntyre

๐Ÿ’ป

Jeffrey Fisher

๐Ÿ›

Alex Dong

๐Ÿ’ป

Publicker

๐Ÿ’ป

Jakub Naskrฤ™ski

๐Ÿ’ป ๐Ÿ› โš ๏ธ

Benny O

๐Ÿ’ป

Justin Payne

๐Ÿ’ป

marshmallow

๐Ÿšง

Jose Felix

๐Ÿ’ป

Nikolay Kirsh

๐Ÿ’ป

Mudassar Ali

๐Ÿ’ป

Nathan Bland

๐Ÿ› ๐Ÿ’ป

Craig Lam

๐Ÿ’ป ๐Ÿ› โš ๏ธ

Ashinze Ekene

๐Ÿ› ๐Ÿ’ป

Harry Sullivan

๐Ÿ’ป

Mauricio Martรญnez

๐Ÿ’ป

Black-Hole

๐Ÿ’ป

Frank Blendinger

๐Ÿ’ป

Eduardo Reveles

๐Ÿ’ป

Leo Royzengurt

๐Ÿ’ป ๐Ÿ›

kcvgan

๐Ÿ’ป ๐Ÿ›

Cody Towstik

๐Ÿ’ป โš ๏ธ ๐Ÿ›

Vincent Dรถrig

โš ๏ธ ๐Ÿ’ป

Michael Huynh

๐Ÿ’ป ๐Ÿ›

Joshua Bloom

๐Ÿ’ป

Mxchaeltrxn

๐Ÿ’ป โš ๏ธ

Konrad Staniszewski

๐Ÿ“–

Yohix

๐Ÿšง

Jackson Elfers

๐Ÿ’ป

Vamshi

๐Ÿ’ป

Simos

๐Ÿ’ป โš ๏ธ

Yankee

๐Ÿ’ป ๐Ÿค” โš ๏ธ

G-Milevski

๐Ÿ’ป

Kody Clemens

๐Ÿ’ป โš ๏ธ ๐Ÿ›

Vladimir Yamshikov

๐Ÿ’ป ๐Ÿ›

Ronan D'Souza

๐Ÿ’ป

Roland Fredenhagen

๐Ÿ’ป

Pranjali Pramod Patil

โš ๏ธ

Chris Bargmann

๐Ÿค” ๐Ÿ’ป

Jadhiel Vรฉlez

๐Ÿ’ป ๐Ÿ›

Lucas Machado

๐Ÿ’ป ๐Ÿ› โš ๏ธ

xsteadybcgo

๐Ÿ›

Marius Robert RWANDARUSHYA

โš ๏ธ

Isaac Komezusenge

โš ๏ธ

Maxime Ishimwe

โš ๏ธ

Marcos Spanholi

โš ๏ธ

Roshan Rajeev

๐Ÿ’ป

fistonhn

โš ๏ธ

Raffaele Ferri

๐Ÿšง

Dusabe Johnson

โš ๏ธ

tomasvn

๐Ÿ’ป

Lucas Ribeiro

๐Ÿ’ป โš ๏ธ

Bartosz Zagrodzki

๐Ÿ’ป

Mahendran Mookkiah

๐Ÿ’ป

hkhattabii

๐Ÿ’ป

Federico Pomponii

๐Ÿ’ป

Acknowledgements

Author

License

This project is open source and available under the MIT License.

More Repositories

1

webpack-boilerplate

๐Ÿ“ฆ โ€Ž A sensible webpack 5 boilerplate.
JavaScript
2,399
star
2

taniarascia.com

๐Ÿ’พ โ€Ž Personal website running on Gatsby, React, and Node.js.
JavaScript
1,982
star
3

wp-functions

A compilation of function snippets for WordPress developers who create their own themes.
1,206
star
4

new-moon

๐ŸŒ™ โ€Ž The optimized dark theme for web development.
Less
1,205
star
5

primitive

โ›๏ธ โ€Ž A front-end design toolkit for developing web apps.
SCSS
920
star
6

react-tutorial

A walkthrough of basic React concepts.
CSS
738
star
7

mvc

A simple MVC application in plain JavaScript.
JavaScript
575
star
8

sandbox

Development sandbox for front end projects and tutorials.
JavaScript
531
star
9

chip8

๐ŸŽฎ โ€Ž A Chip-8 emulator written in JavaScript for web, CLI, and native UI.
JavaScript
413
star
10

react-hooks

Build a CRUD app in React with Hooks.
JavaScript
371
star
11

laconia

๐Ÿบ โ€Ž A minimalist MVC framework.
PHP
360
star
12

snek

๐Ÿ โ€Ž A terminal-based Snake implementation written in JavaScript.
JavaScript
272
star
13

pdo

Connecting to MySQL in PHP using PDO.
PHP
230
star
14

startwordpress

Learn how to develop a WordPress theme from scratch with this basic skeleton and accompanying tutorial.
PHP
208
star
15

chat

๐Ÿ’ฌ ๐Ÿ• โ€Ž very chat. such messages. so talking. wow. React/Redux, TypeScript, Socket.io chat app.
TypeScript
204
star
16

accordion

๐Ÿช— Play the accordion with your computer keyboard!
JavaScript
174
star
17

vue-tutorial

A walkthrough of basic Vue concepts.
Vue
149
star
18

react-advanced-form

An example of a schema-based form system for React.
JavaScript
128
star
19

oblate

Custom theme for my personal website and blog.
PHP
124
star
20

startjekyll

An example and guide to getting started with Jekyll and static site generators.
CSS
115
star
21

memory

โญ โ€Ž JavaScript Memory Game.
JavaScript
110
star
22

node-api-postgres

RESTful API with Node.js, Express, and Postgres.
JavaScript
103
star
23

upload

How to Upload a File to a Server in PHP
PHP
101
star
24

bootstrapblog

Build on the official Bootstrap blog starter template to learn how to make a WordPress theme.
HTML
97
star
25

sokoban

Sokoban.js ๐Ÿ“ฆ
JavaScript
91
star
26

new-moon-vscode

New Moon Theme for Visual Studio Code.
90
star
27

untheme

A blank WordPress theme for developers.
PHP
88
star
28

new-moon-chrome-devtools

New Moon Theme for Chrome Devtools.
CSS
58
star
29

card

A well-designed card element.
CSS
55
star
30

new-moon-sublime

New Moon Syntax Theme for Sublime Text
54
star
31

router-example

Use React Router DOM to create a Single Page Application (SPA).
JavaScript
52
star
32

tictactoe

#๏ธโƒฃ Tic Tac Toe in TypeScript.
TypeScript
42
star
33

baba

JavaScript
31
star
34

node-test

How to make your first Node.js project
JavaScript
26
star
35

new-moon-atom-syntax

New Moon Syntax Theme for Atom
CSS
25
star
36

new-moon-brackets

New Moon Theme for Brackets.
Less
22
star
37

calc

Unit Testing in JavaScript
JavaScript
20
star
38

graphql-fantasy-api

JavaScript
19
star
39

dotfiles

Dotfile configuration.
15
star
40

taniarascia

13
star
41

singularity

An online, text-based dystopian strategy game built in PHP. Modified from the original QMT Promisance code.
PHP
12
star
42

3d

3D printer projects.
10
star
43

coffee

Cafรฉtography
JavaScript
10
star
44

new-moon.vim

port of taniarascias newmoon colorscheme
Vim Script
10
star
45

startgrunt

Learn how to install Grunt and use it to create a Sass and JavaScript workflow.
JavaScript
10
star
46

comments

Comments
7
star
47

httpcast

HTML
5
star
48

signals

Signal test
JavaScript
3
star