Skip to content

Commit b03f5af

Browse files
committed
update deploy buttons
0 parents  commit b03f5af

File tree

9 files changed

+867
-0
lines changed

9 files changed

+867
-0
lines changed

.devcontainer/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
FROM mcr.microsoft.com/devcontainers/typescript-node:22-bookworm

.devcontainer/devcontainer.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"build": {
3+
"dockerfile": "Dockerfile",
4+
"context": ".."
5+
},
6+
"features": {
7+
"ghcr.io/defanglabs/devcontainer-feature/defang-cli:1.0.4": {},
8+
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
9+
"ghcr.io/devcontainers/features/aws-cli:1": {}
10+
}
11+
}

.github/workflows/deploy.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Deploy
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
deploy:
10+
environment: playground
11+
runs-on: ubuntu-latest
12+
permissions:
13+
contents: read
14+
id-token: write
15+
16+
steps:
17+
- name: Checkout Repo
18+
uses: actions/checkout@v4
19+
20+
- name: Deploy
21+
uses: DefangLabs/[email protected]

README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Node.js & REST API
2+
3+
[![1-click-deploy](https://defang.io/deploy-with-defang.svg)](https://portal.defang.dev/redirect?url=https%3A%2F%2Fgithub.com%2Fnew%3Ftemplate_name%3Dsample-nodejs-rest-api-template%26template_owner%3DDefangSamples)
4+
5+
This is a simple Node.js application that uses Express.js to create a REST API. It has two endpoints: one that returns a status message, and another that fetches and returns average interest rates data from the U.S. Department of the Treasury's Fiscal Data API.
6+
7+
---
8+
9+
Title: Node.js & REST API
10+
11+
Short Description: A simple Node.js application that creates a REST API and fetches data from the U.S. Department of the Treasury's Fiscal Data API.
12+
13+
Tags: Node.js, REST API, JavaScript
14+
15+
Languages: nodejs

app/Dockerfile

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Use the slim version of Node.js on Debian Bookworm as the base image
2+
FROM node:20-bookworm-slim
3+
4+
RUN apt-get update -qq \
5+
&& apt-get install -y curl \
6+
&& apt-get clean \
7+
&& rm -rf /var/lib/apt/lists/*
8+
9+
# Set the working directory to /app
10+
WORKDIR /app
11+
12+
# Copy package.json and package-lock.json into the container at /app
13+
COPY package*.json ./
14+
15+
# Install any needed packages specified in package.json using npm ci for a clean install
16+
RUN npm ci
17+
18+
# Copy the current directory contents into the container at /app
19+
COPY . .
20+
21+
# Make port 3000 available to the world outside this container
22+
EXPOSE 3000
23+
24+
# Run the app when the container launches
25+
ENTRYPOINT ["node", "main.js"]

app/main.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const express = require('express');
2+
const fetch = require('node-fetch');
3+
const app = express();
4+
5+
app.get('/', (req, res) => {
6+
res.json({ status: "ok" });
7+
});
8+
9+
app.get('/rates', async (req, res) => {
10+
const url = "https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v2/accounting/od/avg_interest_rates?page[number]=1&page[size]=10";
11+
12+
try {
13+
const response = await fetch(url, {
14+
headers: {
15+
"Content-Type": "application/json",
16+
}
17+
});
18+
if (!response.ok) {
19+
res.json({ status: "error" });
20+
return;
21+
}
22+
const data = await response.json();
23+
res.json(data);
24+
} catch (err) {
25+
console.error(err);
26+
res.json({ status: "error" });
27+
}
28+
});
29+
30+
app.listen(3000, '0.0.0.0', () => {
31+
console.log('Server running on http://0.0.0.0:3000')
32+
});

0 commit comments

Comments
 (0)