All Projects → DylanAllen → noiiice

DylanAllen / noiiice

Licence: MIT license
a serverless blog built on NuxtJS, AWS, serverless framework, and irrational exuberance.

Programming Languages

javascript
184084 projects - #8 most used programming language
Vue
7211 projects
SCSS
7915 projects

Projects that are alternatives of or similar to noiiice

aws-swaggerui
Serverless Swagger UI for API Gateway
Stars: ✭ 26 (-38.1%)
Mutual labels:  api-gateway, cognito, serverless-framework
amazon-ivs-ugc-web-demo
This repository shows how you can build a compelling user-generated content (UGC) live streaming webapp with Amazon IVS.
Stars: ✭ 14 (-66.67%)
Mutual labels:  api-gateway, cognito, serverless-framework
Serverless Es Logs
A Serverless plugin to transport logs to ElasticSearch
Stars: ✭ 51 (+21.43%)
Mutual labels:  api-gateway, serverless-framework
React Cognito Auth
A sample authentication app implemented with a server-less architecture, using cognito User Pools, API Gateway, react
Stars: ✭ 76 (+80.95%)
Mutual labels:  api-gateway, cognito
Serverless Architectures Aws
The code repository for the Serverless Architectures on AWS book
Stars: ✭ 120 (+185.71%)
Mutual labels:  api-gateway, serverless-framework
Serverless Stack Demo Api
Source for the demo app API in Serverless-Stack.com
Stars: ✭ 486 (+1057.14%)
Mutual labels:  api-gateway, serverless-framework
Aws Mobile React Sample
A React Starter App that displays how web developers can integrate their front end with AWS on the backend. The App interacts with AWS Cognito, API Gateway, Lambda and DynamoDB on the backend.
Stars: ✭ 650 (+1447.62%)
Mutual labels:  api-gateway, cognito
Aws Cli Cheatsheet
☁️ AWS CLI + JQ = Make life easier
Stars: ✭ 94 (+123.81%)
Mutual labels:  api-gateway, cognito
hyperform
⚡ Lightweight serverless framework for NodeJS
Stars: ✭ 156 (+271.43%)
Mutual labels:  api-gateway, serverless-framework
Serverless Aws Alias
Alias support for Serverless 1.x
Stars: ✭ 171 (+307.14%)
Mutual labels:  api-gateway, serverless-framework
Zappa
Serverless Python
Stars: ✭ 11,859 (+28135.71%)
Mutual labels:  api-gateway, serverless-framework
Frontend Application
💮 ALIS Media - Frontend Application
Stars: ✭ 181 (+330.95%)
Mutual labels:  api-gateway, nuxt
Serverless Express
Run Node.js web applications and APIs using existing application frameworks on AWS #serverless technologies such as Lambda, API Gateway, Lambda@Edge, and ALB.
Stars: ✭ 4,265 (+10054.76%)
Mutual labels:  api-gateway, serverless-framework
Workshop Donkeytracker
Workshop to build a serverless tracking application for your mobile device with an AWS backend
Stars: ✭ 27 (-35.71%)
Mutual labels:  api-gateway, cognito
Zappa
Serverless Python
Stars: ✭ 224 (+433.33%)
Mutual labels:  api-gateway, serverless-framework
Serverless Api Gateway Caching
A plugin for the Serverless framework which helps with configuring caching for API Gateway endpoints.
Stars: ✭ 92 (+119.05%)
Mutual labels:  api-gateway, serverless-framework
CloudFrontier
Monitor the internet attack surface of various public cloud environments. Currently supports AWS, GCP, Azure, DigitalOcean and Oracle Cloud.
Stars: ✭ 102 (+142.86%)
Mutual labels:  api-gateway, serverless-framework
nestjs-graphql-serverless
Boilerplate for using NestJS with GraphQL (Code-First) on serverless environment (AWS Lambda)
Stars: ✭ 64 (+52.38%)
Mutual labels:  api-gateway, serverless-framework
Serverless Next.js
⚡ Deploy your Next.js apps on AWS Lambda@Edge via Serverless Components
Stars: ✭ 2,977 (+6988.1%)
Mutual labels:  api-gateway, serverless-framework
Aws Mobile React Native Starter
AWS Mobile React Native Starter App https://aws.amazon.com/mobile
Stars: ✭ 2,247 (+5250%)
Mutual labels:  api-gateway, cognito

Noiiice Blog

A serverless blog cms.

Noiiice is a fully serverless blog platform with server-less side rendering. All services run on Amazon Web Services. The webapp is a Nuxt.js app served from a Lambda function using serverless-http through API Gateway. Authentication uses AWS Cognito, APIs are Lambda functions, media files served from S3, and blog/comment data stored in DynamoDB.

What you will need

  • An AWS account with admin access (free to create, but requires a credit card)
  • Install and configure the AWS CLI on your machine:
  • A web domain (doesn't have to be in AWS Route53, you just need access to the DNS)

Installation and Deployment Steps:

From the command line:

#Install serverless
npm install -g serverless
#clone the repo
git clone [email protected]:DylanAllen/noiiice.git
# Navigate to project directory
cd noiiice
# Install dependencies
npm install

Rename example-secrets.json file to secrets.json and update the values.

  • region - Your AWS region that you want to deploy the app into (us-east-1, us-west-2, etc.). Be aware that Cognito is not supported in all regions. us-east-1 is recommended as it is currently the only region where API Gateway endpoint type EDGE is supported.
  • blogCommentsDB & blogPostDB - What you want to name your post and comment tables in DynamoDB.
  • userPool - A name for your Cognito user pool (can not contain dashes or spaces)
  • adminUser - A username for your admin user.
  • adminUserEmail - The email address for your admin user (this is where your initial password will be emailed)
  • mediaBucket - A name for your s3 media bucket. (Must start with a lowercase letter, no spaces)
  • domain - The domain for your website. You must have access to the DNS records for this domain.
  • certificateArn - This will be populated automatically after the certificate is created. If you already have a cert AWS Certificate Manager, you can enter the arn for that cert here and skip the sls createCert --stage dev step below. You will also have to verify that cert on your domain.
  • restrictedStrings - a comma separated list of string (no spaces between commas) of words that you do not want to be allowed in the comments of your blog. If one of these words are present in a comment, the application will not allow the comment to be created.
  • endpointType - Either EDGE or REGIONAL. This sets the API Gateway endpoint type. EDGE will only work in the region us-east-1 while REGIONAL will work in any Region.
  • googleAnalyticsID - If you want to add Google Analytics to your site, enter the ID here. If you do not, set this value to a blank string "googleAnalyticsID": "" and the GA scripts will not run.
{
  "dev": {
    "region": "us-east-1",
    "blogCommentsDB": "NoiiceCommentsDEV",
    "blogPostDB": "NoiiceBlogPostsDEV",
    "userPool": "NoiiceBlogDEV",
    "adminUser": "youradminusername",
    "adminUserEmail": "[email protected]",
    "mediaBucket": "noiicemediaDEV",
    "domain": "dev.yourdomain.com",
    "certificateArn":"",
    "restrictedStrings": "",
    "endpointType": "EDGE",
    "googleAnalyticsID": "UA-XXXXXXXX-X"
  },
  "prod": {
    "region": "us-west-2",
    "blogCommentsDB": "NoiiceComments",
    "blogPostDB": "NoiiceBlogPosts",
    "userPool": "NoiiceBlog",
    "adminUser": "youradminusername",
    "adminUserEmail": "[email protected]",
    "mediaBucket": "noiicemedia",
    "domain": "yourdomain.com",
    "certificateArn":"",
    "restrictedStrings": "",
    "endpointType": "REGIONAL",
    "googleAnalyticsID": "UA-XXXXXXXX-X"
  }
}

Deployment

# Create the certificate for your domain
sls createCert --stage dev

If your domain is in Route53

If your domain was registered through Route53 in your AWS account, the DNS verification records will be created automatically. Wait about 40 minutes for the certificate creation and verification.

If your domain was registered elsewhere

If your domain is not in Route53, you will receive an output in the console of the record that you need to add to your DNS to verify the certificate. This info will also be written to you secrets.json file under certVerificationData for your reference, and can be found in AWS Certificate manager. Go to your domain's DNS records and add that CNAME record. About 40 minutes after you add the CNAME your certificate will verify

Deploy the serverless stack

sls deploy --stage dev

If your domain is hosted in Route53, your DNS records will have been updated automatically. Wait another 40 minutes for API gateway and domain to propagate.

If your domain is hosted elsewhere, the CNAME record that you need to add to your DNS records will have been added to your secrets.json file under cloudFrontCNAME. Add that to your domain's DNS records, and in about 40 minutes, your website will be live!

Check your email for your admin user password, login to your app, and reset your password.

Customize your site

After deployment and you can run your site locally:

npm run dev

This will start your dev server at http://localhost:3000 with hot reloading.

The web app files are in apps/app/ All of the CSS files are in the assets folder.

You can re-depoy the web app without a complete serverless deploy. You can do this by running:

sls buildNuxtApp --stage dev

This will re-build the app and upload the results to it's lambda function. If you make updates to any other lambda functions, you can do a full re-deploy, or deploy the lambdas individually.

For detailed explanation on how Nuxt works, checkout Nuxt.js docs.

For more info about the serverless framework: serverless.com

Uninstall

To remove all of your resources from AWS:

serverless remove --stage dev

This will delete all files from tour media s3 bucket, and delete all of the AWS resources created i the stack except for you Certificate.

You can not delete the certificate when it is attached to a distribution, and it takes some time for the CloudFront distribution to be disabled and removed. After that completes (again, about 40 minutes) you can go into the AWS Certificate Manager console and delete the certificate.

Also, your DNS records will not be automatically removed.

Pull Requests Welcome!

I am actively developing this project on my spare time. I would love some help if you are Vue/Nuxt/serverless savvy.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].