diff --git a/pages/api/Fitbit/Heartrate.js b/pages/api/Fitbit/Heartrate.js
new file mode 100644
index 0000000..903846f
--- /dev/null
+++ b/pages/api/Fitbit/Heartrate.js
@@ -0,0 +1,42 @@
+// React
+import { format } from 'date-fns'
+
+const {
+ FITBIT_TOKEN: bearer
+ } = process.env;
+
+const today = format(new Date(), 'yyyy-MM-dd')
+
+export const getName = async (props) => {
+ const uuid = props;
+ return fetch(
+ 'https://api.fitbit.com/1/user/-/activities/heart/date/today/1d/1sec.json',
+ {
+ headers: {
+ Authorization: `Bearer ${bearer}`,
+ },
+ }
+ );
+};
+
+const FitbitHeartrate = async (req, res) => {
+ const { uuid } = req.query
+ const response = await getName(uuid);
+ const data = await response.json();
+ if (response.status === 204 || response.status > 400) {
+ return res.status(200).send("404");
+ }
+ const heartrate = data["activities-heart"].map((item, i) => {
+ if (item.dateTime = today) {
+ return item.value.restingHeartRate
+ } else {
+ return "Failed to retrieve data."
+ }
+ }
+ )
+ return res.status(200).json({
+ heartrate,
+ });
+};
+
+export default FitbitHeartrate
\ No newline at end of file
diff --git a/pages/api/Fitbit/Sleep.js b/pages/api/Fitbit/Sleep.js
new file mode 100644
index 0000000..86c058e
--- /dev/null
+++ b/pages/api/Fitbit/Sleep.js
@@ -0,0 +1,43 @@
+// React
+import { format } from 'date-fns'
+
+const {
+ FITBIT_TOKEN: bearer
+ } = process.env;
+
+const today = format(new Date(), 'yyyy-MM-dd')
+
+export const getName = async (props) => {
+ const uuid = props;
+ return fetch(
+ 'https://api.fitbit.com/1.2/user/-/sleep/date/' + today + '.json',
+ {
+ headers: {
+ Authorization: `Bearer ${bearer}`,
+ },
+ }
+ );
+};
+
+const FitbitSleep = async (req, res) => {
+ const { uuid } = req.query
+ const response = await getName(uuid);
+ const data = await response.json();
+ if (response.status === 204 || response.status > 400) {
+ return res.status(200).send("404");
+ }
+ // const duration = data["sleep"].map((item, i) => {
+ // if (item.dateOfSleep = today) {
+ // return item.duration
+ // } else {
+ // return "Failed to retrieve data."
+ // }
+ // }
+ // )
+ const duration = data.summary.totalMinutesAsleep
+ return res.status(200).json({
+ duration,
+ });
+};
+
+export default FitbitSleep
\ No newline at end of file
diff --git a/pages/components/Fitbit/Heartrate.js b/pages/components/Fitbit/Heartrate.js
new file mode 100644
index 0000000..4de566a
--- /dev/null
+++ b/pages/components/Fitbit/Heartrate.js
@@ -0,0 +1,36 @@
+// Data fetching
+import useSwr from 'swr'
+
+// Font Awesome
+import { faHeartbeat } from '@fortawesome/free-solid-svg-icons'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+
+// Data fetching implements
+const fetcher = (url) => fetch(url).then((res) => res.json())
+
+function App (props) {
+ const { data, error } = useSwr(
+ '/api/Fitbit/Heartrate',
+ fetcher
+ )
+
+ if (error) {
+ return (
+ <>エラーが発生しました。>
+ )
+ } else {
+ if (!data) {
+ return (
+ <>読み込み中...>
+ )
+ } else {
+ return (
+ <>
+