This project is a small but feature complete application build with Fastify and Svelte, and it aims to show all the core concepts of Fastify, best practices, and recommendations.
There is no attached blog post or tutorial, you should go through the application code and read the code comments, which will explain you best practices, protips, suggestions and so forth, I hope you will like it!
You you can read the project in any order, but I would recommend the following:
plugins/authorization/index.js
plugins/elasticsearch.js
plugins/rate-limit.js
plugins/validUrl.js
plugins/swagger.js
routes/status.js
routes/frontend.js
routes/admin.js
routes/redirect/index.js
routes/redirect/update-count.js
routes/redirect/worker.cjs
routes/redirect/App.svelte
ui/*
test/helper.js
test/plugins/validUrl.test.js
test/routes/status.test.js
test/routes/admin.test.js.test.js
test/routes/redirect.test.js.test.js
-
Create an
.env
file from the template:cp .env.template .env
-
Create a new GitHub OAuth application here, then copy the app id and secret and add them to the env file:
GITHUB_APP_ID=<app-id> GITHUB_APP_SECRET=<app-secret>
-
Add your primary GitHub email to the
ALLOWED_USERS
variable:ALLOWED_USERS=<your-primary-github-mail>
-
Run the
keys-generator
script and store the result in theCOOKIE_SECRET
env variable:node scripts/keys-generator.js
COOKIE_SECRET=<generated-key>
Now you can either run the project locally or deploy it.
-
Install the project dependencies:
npm install
-
In a separate terminal window, run Elasticsearch:
npm run elasticsearch
-
Once Elasticsearch is up and running, run the
prepare-elasticsearch
script and copy the result in theELASTIC_URL
andELASTIC_API_KEY
env variables:node scripts/prepare-elasticsearch.js
ELASTIC_URL=<result.address> ELASTIC_API_KEY=<result.apiKey>
-
You are all set! Run the project with thw following command:
npm run dev
This sections contains the instruction for deploying this application.
Would you like to see more recipes? Open an issue. Do you already have a deploy recipe and want to share it? That's awesome, send a pull request!
Open deploy-recipes/cloud-run
, you will find everything you need there.
You can create an Elasticsearch cluster with Elastic Cloud, with a free 14-day trial of the Elasticsearch Service.
Feel free to send pull request with new features, bugfix or documentation improvements!
Open an issue or take a look at our fastify/help
repository.
We also have a Discord community you can join.
If you have any question related to Elasticsearch or the Elasticsearch client, you can open a new discussion on discuss.elastic.co or in the client issue tracker.
This software is licensed under the Apache 2 license.