Merge branch 'main' into dev

This commit is contained in:
Ben Grant 2021-04-26 15:52:39 +10:00
commit 96f312369e
9 changed files with 122 additions and 4 deletions

View file

@ -21,7 +21,7 @@ The browser extension in `crabfit-browser-extension` can be tested by first runn
2. Run `./deploy.sh` to compile and deploy. 2. Run `./deploy.sh` to compile and deploy.
### Backend ### Backend
1. Deploy the backend `cd crabfit-backend && gcloud app deploy --project=crabfit` 1. Deploy the backend `cd crabfit-backend && gcloud app deploy --project=crabfit --version=v1`
2. Deploy the endpoints service `cd crabfit-backend && gcloud endpoints services deploy swagger.yaml` 2. Deploy the endpoints service `cd crabfit-backend && gcloud endpoints services deploy swagger.yaml`
### Browser extension ### Browser extension

View file

@ -4,7 +4,7 @@ env: flex
automatic_scaling: automatic_scaling:
min_num_instances: 1 min_num_instances: 1
max_num_instances: 4 max_num_instances: 2
endpoints_api_service: endpoints_api_service:
name: api-dot-crabfit.appspot.com name: api-dot-crabfit.appspot.com

View file

@ -20,4 +20,4 @@ handlers:
redirect_http_response_code: 301 redirect_http_response_code: 301
EOF EOF
gcloud app deploy --project=crabfit gcloud app deploy --project=crabfit --version=v1

View file

@ -1,6 +1,6 @@
[{ [{
"relation": ["delegate_permission/common.handle_all_urls"], "relation": ["delegate_permission/common.handle_all_urls"],
"target" : { "namespace": "android_app", "package_name": "fit.crab.twa", "target" : { "namespace": "android_app", "package_name": "fit.crab",
"sha256_cert_fingerprints": ["FC:73:EE:22:0E:A4:98:5F:AE:64:7B:75:2E:2B:D9:4A:7E:5D:EB:B2:44:83:00:05:18:F2:65:6D:31:95:B7:8D"] } "sha256_cert_fingerprints": ["FC:73:EE:22:0E:A4:98:5F:AE:64:7B:75:2E:2B:D9:4A:7E:5D:EB:B2:44:83:00:05:18:F2:65:6D:31:95:B7:8D"] }
} }
] ]

View file

@ -2,6 +2,7 @@
User-agent: * User-agent: *
Allow: /$ Allow: /$
Allow: /how-to$ Allow: /how-to$
Allow: /privacy$
Disallow: * Disallow: *
sitemap: https://crab.fit/sitemap.xml sitemap: https://crab.fit/sitemap.xml

View file

@ -9,4 +9,8 @@
<loc>https://crab.fit/how-to</loc> <loc>https://crab.fit/how-to</loc>
<priority>0.4</priority> <priority>0.4</priority>
</url> </url>
<url>
<loc>https://crab.fit/privacy</loc>
<priority>0.2</priority>
</url>
</urlset> </urlset>

View file

@ -17,6 +17,7 @@ const Home = lazy(() => import('pages/Home/Home'));
const Event = lazy(() => import('pages/Event/Event')); const Event = lazy(() => import('pages/Event/Event'));
const Create = lazy(() => import('pages/Create/Create')); const Create = lazy(() => import('pages/Create/Create'));
const Help = lazy(() => import('pages/Help/Help')); const Help = lazy(() => import('pages/Help/Help'));
const Privacy = lazy(() => import('pages/Privacy/Privacy'));
const App = () => { const App = () => {
const colortheme = useSettingsStore(state => state.theme); const colortheme = useSettingsStore(state => state.theme);
@ -120,6 +121,11 @@ const App = () => {
<Suspense fallback={<Loading />}> <Suspense fallback={<Loading />}>
<Help {...props} /> <Help {...props} />
</Suspense> </Suspense>
)} />
<Route path="/privacy" exact render={props => (
<Suspense fallback={<Loading />}>
<Privacy {...props} />
</Suspense>
)} /> )} />
<Route path="/create" exact render={props => ( <Route path="/create" exact render={props => (
<Suspense fallback={<Loading />}> <Suspense fallback={<Loading />}>

View file

@ -0,0 +1,106 @@
import { useEffect } from 'react';
import { Link, useHistory } from 'react-router-dom';
import {
Button,
Center,
Donate,
} from 'components';
import {
StyledMain,
Logo,
Title,
AboutSection,
Footer,
P,
} from '../Help/helpStyle';
import logo from 'res/logo.svg';
const Privacy = () => {
const { push } = useHistory();
useEffect(() => {
document.title = 'Privacy Policy - Crab Fit';
}, []);
return (
<>
<StyledMain>
<Link to="/" style={{ textDecoration: 'none' }}>
<Center>
<Logo src={logo} alt="" />
<Title>CRAB FIT</Title>
</Center>
<Center style={{ textDecoration: 'underline', fontSize: 14, paddingTop: 6 }}>Create your own</Center>
</Link>
</StyledMain>
<StyledMain>
<h1>Privacy Policy</h1>
<h3>Crab Fit</h3>
<P>This SERVICE is provided by Benjamin Grant at no cost and is intended for use as is.</P>
<P>This page is used to inform visitors regarding the policies of the collection, use, and disclosure of Personal Information if using the Service.</P>
<P>If you choose to use the Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that is collected is used for providing and improving the Service. Your information will not be used or shared with anyone except as described in this Privacy Policy.</P>
<h2>Information Collection and Use</h2>
<P>The Service uses third party services that may collect information used to identify you.</P>
<P>Links to privacy policies of the third party service providers used by the Service:</P>
<P>
<ul>
<li><a href="https://www.google.com/policies/privacy/" target="blank">Google Play Services</a></li>
</ul>
</P>
<h2>Log Data</h2>
<P>When you use the Service, in the case of an error, data and information is collected to improve the Service, which may include your IP address, device name, operating system version, app configuration and the time and date of the error.</P>
<h2>Cookies</h2>
<P>Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.</P>
<P>Cookies are used by Google Analytics to track you across the web and provide anonymous statistics to improve the Service.</P>
<h2>Service Providers</h2>
<P>Third-party companies may be employed for the following reasons:</P>
<P>
<ul>
<li>To facilitate the Service</li>
<li>To provide the Service on our behalf</li>
<li>To perform Service-related services</li>
<li>To assist in analyzing how the Service is used</li>
</ul>
</P>
<P>To perform these tasks, the third parties may have access to your Personal Information, but are obligated not to disclose or use this information for any purpose except the above.</P>
<h2>Security</h2>
<P>Personal Information that is shared via the Service is protected, however remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, so take care when sharing Personal Information.</P>
<h2>Links to Other Sites</h2>
<P>The Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by the Service. Therefore, you are advised to review the Privacy Policy of these websites.</P>
<h2>Children's Privacy</h2>
<P>The Service does not address anyone under the age of 13. Personally identifiable information is not knowingly collected from children under 13. If discovered that a child under 13 has provided the Service with personal information, such information will be immediately deleted from the servers. If you are a parent or guardian and you are aware that your child has provided the Service with personal information, please <a href="mailto:benjamin.grantGRA0007+crabfit@gmail.com">contact us</a> so that this information can be removed.</P>
<h2>Changes to This Privacy Policy</h2>
<P>This Privacy Policy may be updated from time to time. Thus, you are advised to review this page periodically for any changes.</P>
<P>This policy is effective as of 2021-04-20</P>
<h2>Contact Us</h2>
<P>If you have any questions or suggestions about the Privacy Policy, do not hesitate to contact us at <a href="mailto:benjamin.grantGRA0007+crabfit@gmail.com">benjamin.grantGRA0007+crabfit@gmail.com</a>.</P>
</StyledMain>
<AboutSection id="about">
<StyledMain>
<Center><Button buttonWidth="230px" onClick={() => push('/')}>Create your own Crab Fit!</Button></Center>
</StyledMain>
</AboutSection>
<Footer id="donate">
<span>Thank you for using Crab Fit. If you like it, consider donating.</span>
<Donate />
</Footer>
</>
);
};
export default Privacy;

View file

@ -2,3 +2,4 @@ export { default as Home } from './Home/Home';
export { default as Event } from './Event/Event'; export { default as Event } from './Event/Event';
export { default as Create } from './Create/Create'; export { default as Create } from './Create/Create';
export { default as Help } from './Help/Help'; export { default as Help } from './Help/Help';
export { default as Privacy } from './Privacy/Privacy';