Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
7257ac8
add last line in read.me
SamahQaradeh Mar 16, 2026
fe066cf
adding ci.yaml file
SamahQaradeh Mar 16, 2026
ce4f028
edit the last step tp check the node's version
SamahQaradeh Mar 16, 2026
fe3370a
broken codes that should fail
SamahQaradeh Mar 16, 2026
c21f807
correct codes, that must pass
SamahQaradeh Mar 16, 2026
9bd08c8
correct codes2, that must pass
SamahQaradeh Mar 16, 2026
e3faa90
correct codes3, that must pass
SamahQaradeh Mar 16, 2026
1235310
fix CI workflow
SamahQaradeh Mar 16, 2026
6dd2a16
edit pkg.json
SamahQaradeh Mar 16, 2026
3adf88b
adding coverage
SamahQaradeh Mar 16, 2026
87176e6
README Badge for Tests
SamahQaradeh Mar 16, 2026
d94bab1
README Badge for Testsssssss
SamahQaradeh Mar 16, 2026
3ee3df7
README Badge for Tests with text , not only image
SamahQaradeh Mar 16, 2026
b2051a0
README Badge for Tests with text , not only image, change title
SamahQaradeh Mar 16, 2026
f510816
rename yaml file
SamahQaradeh Mar 16, 2026
b48d37f
add comment
SamahQaradeh Mar 16, 2026
01cf8c9
add comment2
SamahQaradeh Mar 16, 2026
3276e63
add plain text
SamahQaradeh Mar 16, 2026
a0d5e6a
add plain text
SamahQaradeh Mar 16, 2026
c341cbc
modify readme
SamahQaradeh Mar 16, 2026
5142e8f
modify readme
SamahQaradeh Mar 16, 2026
161f4f0
modify readme
SamahQaradeh Mar 16, 2026
85f4db1
modify readme
SamahQaradeh Mar 16, 2026
3df0ea4
modify readme
SamahQaradeh Mar 16, 2026
0c6e04c
modify readme
SamahQaradeh Mar 16, 2026
e1a9720
add style formatting
SamahQaradeh Mar 16, 2026
c44c151
add linting
SamahQaradeh Mar 16, 2026
83a38a9
add linting
SamahQaradeh Mar 16, 2026
670c1cb
add linting and format
SamahQaradeh Mar 16, 2026
55f7607
add linting and format
SamahQaradeh Mar 16, 2026
bbe658d
add linting and format
SamahQaradeh Mar 16, 2026
d590966
done
SamahQaradeh Mar 16, 2026
cf9de23
done2
SamahQaradeh Mar 16, 2026
2fff9f8
Downgrade ESLint to 9 for TypeScript compatibility
SamahQaradeh Mar 16, 2026
424111e
Fix ESLint peer dependency conflicts for CI
SamahQaradeh Mar 16, 2026
4058337
lint and format
SamahQaradeh Mar 16, 2026
c03d396
Fix ESLint config and add TypeScript ESLint packages
SamahQaradeh Mar 16, 2026
80e21b4
Fix ESLint config for TypeScript and JS
SamahQaradeh Mar 16, 2026
615c262
Fix ESLint config for TypeScript
SamahQaradeh Mar 16, 2026
b9ac5e7
correct sol
SamahQaradeh Mar 16, 2026
e932249
security's warning
SamahQaradeh Mar 16, 2026
f1c291e
no warning
SamahQaradeh Mar 16, 2026
eb230fa
Add CD workflow
SamahQaradeh Mar 16, 2026
a4b052c
clean commit without gcloud sdk
SamahQaradeh Mar 17, 2026
b1b8fee
change header in index.html
SamahQaradeh Mar 17, 2026
154a9f4
solve id problem
SamahQaradeh Mar 17, 2026
c30de7b
add db migrations step
SamahQaradeh Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: cd

on:
push:
branches: [main]

jobs:
Deploy:
runs-on: ubuntu-latest


env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci

- name: Build app
run: npm run build

- name: Authenticate to GCP
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}

- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v2

- name: Build and Push Docker image
run: gcloud builds submit --tag us-central1-docker.pkg.dev/notely-490410/notely-ar-repo/notely:latest .


- name: Run database migrations
run: npm run db:migrate

- name: Deploy to Cloud Run
run: |
gcloud run deploy notely \
--image us-central1-docker.pkg.dev/notely-490410/notely-ar-repo/notely:latest \
--region us-central1 \
--allow-unauthenticated \
--project notely-490410 \
--max-instances=4
49 changes: 49 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@

name: ci

on:
pull_request:
branches: [main]

jobs:
tests:
name: Tests
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 22

- name: Install dependencies
run: npm ci

- name: Run tests
run: npm run test -- --coverage

style:
name: Style
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 22

- name: Install dependencies
run: npm ci

- name: Check formatting
run: npm run format:check

- name: Check lintting
run: npm run lint

- name: Check linting
run: npm run lint -- --max-warnings=0
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ coverage/
dist/
.env
.vscode
google-cloud-sdk/
google-cloud-cli-linux-x86_64.tar.gz
.env
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
https://github.com/SamahQaradeh/learn-cicd-typescript-starter/actions/workflows/ci.yml/badge.svg
![code coverage badge](https://github.com/SamahQaradeh/learn-cicd-typescript-starter/actions/workflows/ci.yml/badge.svg)

# learn-cicd-typescript-starter (Notely)
![code coverage badge](https://github.com/YOUR_NAMESPACE/learn-cicd-starter/actions/workflows/ci.yml/badge.svg)


![code coverage badge](https://github.com/YOUR_NAMESPACE/learn-cicd-starter/actions/workflows/ci.yml /badge.svg )

This repo contains the typescript starter code for the "Notely" application for the "Learn CICD" course on [Boot.dev](https://boot.dev).


## Local Development

Make sure you're on Node version 22+.
Expand All @@ -22,3 +30,6 @@ npm run dev
_This starts the server in non-database mode._ It will serve a simple webpage at `http://localhost:8080`.

You do _not_ need to set up a database or any interactivity on the webpage yet. Instructions for that will come later in the course!
Samah's version of Boot.dev's Notely app.


16 changes: 16 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import js from "@eslint/js";
import globals from "globals";
import pluginSecurity from "eslint-plugin-security";

export default [
{
ignores: ["dist/**"],
},
js.configs.recommended,
{
languageOptions: {
globals: globals.node,
},
},
pluginSecurity.configs.recommended,
];
Loading