diff --git a/src/App.js b/src/App.js
index 19a2677..62d4026 100644
--- a/src/App.js
+++ b/src/App.js
@@ -10,6 +10,7 @@ import SlackCard from './components/SlackCard'
import NpmCard from './components/NpmCard'
import JsOrgCard from './components/JsOrgCard'
import PypiCard from './components/PypiCard'
+import S3Card from './components/S3Card'
import './App.css'
const GlobalStyle = createGlobalStyle`
@@ -53,6 +54,7 @@ export default function App() {
+
) : null}
diff --git a/src/components/S3Card.js b/src/components/S3Card.js
new file mode 100644
index 0000000..8bca316
--- /dev/null
+++ b/src/components/S3Card.js
@@ -0,0 +1,18 @@
+import React from 'react'
+import { Card, CardTitle, DedicatedAvailability } from './Card'
+import { FaAws } from 'react-icons/fa'
+
+export default function S3Card({ name }) {
+ return (
+
+ AWS S3
+ }
+ />
+
+ )
+}
diff --git a/src/services/s3.js b/src/services/s3.js
new file mode 100644
index 0000000..5db8534
--- /dev/null
+++ b/src/services/s3.js
@@ -0,0 +1,23 @@
+const fetch = require('isomorphic-unfetch')
+
+async function getAvailability(name) {
+ const response = await fetch(
+ `https://${encodeURIComponent(name)}.s3.amazonaws.com`
+ )
+ return response.status !== 200
+}
+
+module.exports = async (req, res) => {
+ const name = req.query.name
+
+ if (!name) {
+ return res.status(400).json({ error: 'no query given' })
+ }
+
+ try {
+ const availability = await getAvailability(name)
+ res.json({ availability })
+ } catch (err) {
+ res.status(400).json({ error: err.message })
+ }
+}