This is an app for taking notes. It stands as an example of...
- a simple TypeScript frontend written with React and ReactRouter that speaks to...
- a basic API written with Express JS that does CRUD operations on...
- a tiny sqlite database
If you would like to see this app in action, you can either request access to a hosted version via this link, or you can deploy it yourself (instructions for both local and AWS deployments are below).
- In the "Search" bar, you can filter down to notes that contain a given string in either the name or content of the note. This search functionality gives an example of server-side filtering.
- You can add tags to your notes as a way of indexing them by important strings (e.g, "client:Sally"). You can then filter to notes with a given tag in the "Filter by Tag" field. This tag filtering functionality gives an example of client-side filtering.
- Markdown formatting is supported in note content.
The current version of the notes app has several important limitations:
- HTTPS is not yet supported (:scream:). The app author intends to add a proper NGINX web server with HTTPS support via LetsEncrypt in the near future.
- Authentication: there currently is none (:lol:). The app author intends to add users and user authentication in the future.
- Notes have a minimum of 20 characters, and a maximum of 300 characters (o_O). That's an arbitrary limit for Reasons (TM) that will likely change in the future.
If you would like to submit a feature request or report a problem, please open an issue on this repo.
To deploy this app in AWS, you must have an AWS account with sufficient permissions to create a VPC, Subnet, Security Group, EC2 instance, and Key Pairs.
You must also install terraform and configure an AWS profile that terraform can use to authenticate with your AWS account.
To deploy this app in your AWS account, clone this repo. Then...
- In the
./deploy/vpndirectory, update the values inmain.tf. Then runterraform apply. - In the
/.deploy/instancedirectory, update the values inmain.tf. Then runterraform apply. - When the apply completes, find the link for the note app in the terraform outputs and visit that link from your browser.
These terraform modules use submodules from the estib/sandbox/cloud module.
Install the following tools as appropriate for your operating system:
Clone this repo. In the repo's backend directory, run npm install to install the following npm libraries:
cors
express
sqlite3
In the repo's frontend directory, run npm install to install the following npm libraries:
react-router-dom
axios
react-markdown
Finally, from the repo's root directory, run docker-compose up.