Skip to content

Commit c719327

Browse files
authored
Merge pull request #814 from firebase/fdc-web
add: dataconnect quickstart
2 parents 3bd7f95 + 8ddc524 commit c719327

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+3060
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
.firebaserc
88
dist/
99
**/ui-debug.log
10+
.next

dataconnect/.gitignore

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
firebase-debug.log*
8+
firebase-debug.*.log*
9+
10+
# Firebase cache
11+
.firebase/
12+
13+
# Firebase config
14+
15+
# Uncomment this if you'd like others to create their own Firebase project.
16+
# For a team working on the same Firebase project(s), it is recommended to leave
17+
# it commented so all members can deploy to the same project(s) in .firebaserc.
18+
# .firebaserc
19+
20+
# Runtime data
21+
pids
22+
*.pid
23+
*.seed
24+
*.pid.lock
25+
26+
# Directory for instrumented libs generated by jscoverage/JSCover
27+
lib-cov
28+
29+
# Coverage directory used by tools like istanbul
30+
coverage
31+
32+
# nyc test coverage
33+
.nyc_output
34+
35+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
36+
.grunt
37+
38+
# Bower dependency directory (https://bower.io/)
39+
bower_components
40+
41+
# node-waf configuration
42+
.lock-wscript
43+
44+
# Compiled binary addons (http://nodejs.org/api/addons.html)
45+
build/Release
46+
47+
# Dependency directories
48+
node_modules/
49+
app/src/lib/dataconnect-sdk/
50+
app/package-lock.json
51+
52+
# Optional npm cache directory
53+
.npm
54+
55+
# Optional eslint cache
56+
.eslintcache
57+
58+
# Optional REPL history
59+
.node_repl_history
60+
61+
# Output of 'npm pack'
62+
*.tgz
63+
64+
# Yarn Integrity file
65+
.yarn-integrity
66+
67+
# dotenv environment variables file
68+
.next
69+
.dataconnect

dataconnect/app/.env

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
VITE_FIREBASE_API_KEY=your-api-key
2+
VITE_FIREBASE_AUTH_DOMAIN=your-auth-domain
3+
VITE_FIREBASE_PROJECT_ID=your-project-id
4+
VITE_FIREBASE_STORAGE_BUCKET=your-storage-bucket
5+
VITE_FIREBASE_MESSAGING_SENDER_ID=your-messaging-sender-id
6+
VITE_FIREBASE_APP_ID=your-app-id

dataconnect/app/.eslintrc.cjs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module.exports = {
2+
root: true,
3+
env: { browser: true, es2020: true },
4+
extends: [
5+
'eslint:recommended',
6+
'plugin:@typescript-eslint/recommended',
7+
'plugin:react-hooks/recommended',
8+
],
9+
ignorePatterns: ['dist', '.eslintrc.cjs'],
10+
parser: '@typescript-eslint/parser',
11+
plugins: ['react-refresh'],
12+
rules: {
13+
'react-refresh/only-export-components': [
14+
'warn',
15+
{ allowConstantExport: true },
16+
],
17+
"react-hooks/exhaustive-deps": "warn"
18+
},
19+
}

dataconnect/app/.gitignore

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
node_modules
11+
dist
12+
dist-ssr
13+
*.local
14+
15+
# Editor directories and files
16+
.vscode/*
17+
!.vscode/extensions.json
18+
.idea
19+
.DS_Store
20+
*.suo
21+
*.ntvs*
22+
*.njsproj
23+
*.sln
24+
*.sw?

dataconnect/app/index.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<link rel="icon" type="image/svg+xml" href="/app/src/assets/firebase_logo.svg" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
<title>FriendlyMovies</title>
8+
</head>
9+
<body>
10+
<div id="root"></div>
11+
<script type="module" src="/src/main.tsx"></script>
12+
</body>
13+
</html>

dataconnect/app/package.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"name": "app",
3+
"private": true,
4+
"version": "0.0.0",
5+
"type": "module",
6+
"scripts": {
7+
"dev": "vite",
8+
"build": "tsc && vite build",
9+
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
10+
"preview": "vite preview"
11+
},
12+
"dependencies": {
13+
"@movie/dataconnect": "file:src/lib/dataconnect-sdk",
14+
"dotenv": "^16.4.5",
15+
"firebase": "^10.12.0-dataconnect-preview.388b61c7e",
16+
"react": "^18.3.1",
17+
"react-dom": "^18.3.1",
18+
"react-icons": "^5.2.1",
19+
"react-router-dom": "^6.25.1"
20+
},
21+
"devDependencies": {
22+
"@types/react": "^18.2.43",
23+
"@types/react-dom": "^18.2.17",
24+
"@typescript-eslint/eslint-plugin": "^6.14.0",
25+
"@typescript-eslint/parser": "^6.14.0",
26+
"@vitejs/plugin-react": "^4.2.1",
27+
"autoprefixer": "^10.4.19",
28+
"eslint": "^8.55.0",
29+
"eslint-plugin-react-hooks": "^4.6.0",
30+
"eslint-plugin-react-refresh": "^0.4.5",
31+
"postcss": "^8.4.40",
32+
"tailwindcss": "^3.4.7",
33+
"typescript": "^5.2.2",
34+
"vite": "^5.0.8"
35+
}
36+
}

dataconnect/app/postcss.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export default {
2+
plugins: {
3+
tailwindcss: {},
4+
autoprefixer: {},
5+
},
6+
}

dataconnect/app/src/App.css

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#root {
2+
max-width: 1280px;
3+
margin: 0 auto;
4+
padding: 2rem;
5+
text-align: center;
6+
}
7+
8+
.logo {
9+
height: 6em;
10+
padding: 1.5em;
11+
will-change: filter;
12+
transition: filter 300ms;
13+
}
14+
.logo:hover {
15+
filter: drop-shadow(0 0 2em #646cffaa);
16+
}
17+
.logo.react:hover {
18+
filter: drop-shadow(0 0 2em #61dafbaa);
19+
}
20+
21+
@keyframes logo-spin {
22+
from {
23+
transform: rotate(0deg);
24+
}
25+
to {
26+
transform: rotate(360deg);
27+
}
28+
}
29+
30+
@media (prefers-reduced-motion: no-preference) {
31+
a:nth-of-type(2) .logo {
32+
animation: logo-spin infinite 20s linear;
33+
}
34+
}
35+
36+
.card {
37+
padding: 2em;
38+
}
39+
40+
.read-the-docs {
41+
color: #888;
42+
}

dataconnect/app/src/App.tsx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import React from "react";
2+
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
3+
import Home from "./pages/Home";
4+
import ActorPage from "./pages/Actor";
5+
import MoviePage from "./pages/Movie";
6+
import GenrePage from "./pages/Genre";
7+
import MyProfilePage from "./pages/MyProfile";
8+
import VectorSearchPage from "./pages/VectorSearch";
9+
import AdvancedSearchPage from "./pages/AdvancedSearch";
10+
import NotFound from "./pages/NotFound";
11+
import RootLayout from "./layout/RootLayout";
12+
13+
export default function App() {
14+
return (
15+
<Router>
16+
<RootLayout>
17+
<Routes>
18+
<Route path="/" element={<Home />} />
19+
<Route path="/actor/:id" element={<ActorPage />} />
20+
<Route path="/movie/:id" element={<MoviePage />} />
21+
<Route path="/genre/:genre" element={<GenrePage />} />
22+
<Route path="/myprofile" element={<MyProfilePage />} />
23+
<Route path="/vectorsearch" element={<VectorSearchPage />} />
24+
<Route path="/advancedsearch" element={<AdvancedSearchPage />} />
25+
<Route path="*" element={<NotFound />} />
26+
</Routes>
27+
</RootLayout>
28+
</Router>
29+
);
30+
}

0 commit comments

Comments
 (0)