Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restore marketing site #27

Merged
merged 2 commits into from
Jun 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/deploy-firebase.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
# Builds the static site via pnpm, then copies that local directory's contents
# to Firebase, at: https://praxwallet.com
name: Deploy Prax marketing site
on:
# Support ad-hoc runs via dispatch, so we can deploy from
# unmerged feature branches if necessary.
workflow_dispatch:
push:
branches:
- main

jobs:
build:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- uses: pnpm/action-setup@v3
with:
version: 8

- name: Install dependencies
run: pnpm install

- name: Build static site
run: pnpm build
working-directory: apps/prax-marketing-site

- name: Deploy dapp static site to firebase
# N.B. the firebase-action helper doesn't support semver, e.g. `@v13`,
# so we hardcode a version.
uses: w9jds/[email protected]
with:
args: deploy
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_PATH: apps/prax-marketing-site/dist
13 changes: 13 additions & 0 deletions apps/prax-marketing-site/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { penumbraEslintConfig } from '@penumbra-zone/eslint-config';
import { config, parser } from 'typescript-eslint';

export default config({
...penumbraEslintConfig,
languageOptions: {
parser,
parserOptions: {
project: true,
tsconfigRootDir: import.meta.dirname,
},
},
});
10 changes: 10 additions & 0 deletions apps/prax-marketing-site/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<!doctype html>
<html lang="en">
<head>
<link href="./favicon.png" rel="icon" sizes="80x80" type="image/png" />
</head>
<body>
<div id="root"></div>
<script src="./src/main.tsx" type="module"></script>
</body>
</html>
28 changes: 28 additions & 0 deletions apps/prax-marketing-site/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "prax-marketing-website",
"version": "4.2.0",
"private": true,
"type": "module",
"scripts": {
"build": "tsc && vite build",
"clean": "rm -rfv dist",
"dev": "vite --port 5173",
"lint": "eslint ."
},
"dependencies": {
"@vitejs/plugin-react-swc": "^3.6.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^6.23.1",
"tailwindcss": "^3.4.3"
},
"devDependencies": {
"@penumbra-zone/eslint-config": "workspace:*",
"@penumbra-zone/tailwind-config": "workspace:*",
"@types/react": "^18.3.2",
"@types/react-dom": "^18.3.0",
"autoprefixer": "^10.4.19",
"firebase-tools": "^13.8.0",
"postcss": "^8.4.38"
}
}
6 changes: 6 additions & 0 deletions apps/prax-marketing-site/postcss.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};
Binary file added apps/prax-marketing-site/public/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 42 additions & 0 deletions apps/prax-marketing-site/public/prax-white-vertical.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions apps/prax-marketing-site/src/components/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { Link } from 'react-router-dom';

export const Index = () => {
return (
<div className='flex min-h-screen w-full flex-col items-center justify-center gap-4 bg-neutral-800'>
<img src='./prax-white-vertical.svg' className='size-72' />
<div className='group relative -ml-4 mb-2 inline-flex'>
<div className='text-3xl font-bold text-white'>
<div>Personal.</div>
<div>Private.</div>
<div>Practical.</div>
</div>
</div>
<div className='group relative my-8 -ml-4 inline-flex'>
<div className='absolute -inset-px rounded-xl bg-gradient-to-r from-[#ff8f2f] via-[#c9b67c] to-[#8be4d9] opacity-70 blur-lg transition-all duration-1000 group-hover:-inset-1 group-hover:opacity-100 group-hover:duration-200'></div>
<a
href='https://chromewebstore.google.com/detail/penumbra-wallet/lkpmkhpnhknhmibgnmmhdhgdilepfghe'
title='Install the Prax Wallet'
className='relative inline-flex items-center justify-center rounded-xl bg-gray-900 px-7 py-3 text-lg font-bold text-white transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-gray-900 focus:ring-offset-2'
role='button'
>
Add to Chrome
</a>
</div>
<div className='group relative -ml-4 inline-flex' style={{ maxWidth: '250px' }}>
<div className='text-lg text-white'>
Prax Wallet is a local-first browser wallet for Penumbra that puts you in control of your
data.
</div>
</div>
<Link to='/privacy-policy' className='-ml-4 italic text-neutral-600 underline'>
Privacy Policy
</Link>
</div>
);
};
75 changes: 75 additions & 0 deletions apps/prax-marketing-site/src/components/privacy-policy.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
export const PrivacyPolicy = () => {
return (
<div className='flex min-h-screen w-full flex-col gap-4 bg-neutral-800 p-10 text-white'>
<p className='text-3xl'>Privacy Policy</p>
<p className='italic'>Last updated: May 6, 2024</p>

<p>
Welcome to Prax Wallet, created by Penumbra Labs Inc. (“<b>Penumbra Labs</b>,” &quot;
<b>we</b>,&quot; &quot;<b>our</b>,&quot; or &quot;<b>us</b>&quot;). We are committed to
protecting your privacy. This Privacy Policy describes our limited data processing
activities related to your use of the Prax Wallet application (the “<b>Software</b>”).
</p>

<p>
The Prax Wallet is open-source software, and your use of the Prax Wallet is subject to the
terms of the MIT license available{' '}
<a href='https://github.com/prax-wallet/web/blob/main/LICENSE-MIT' className='underline'>
here
</a>
.
</p>

<p className='text-xl font-bold'>We Do Not Collect Personal Information</p>
<p>
Prax Wallet is designed with privacy as a core principle. The Software runs entirely on the
end-user device, and we do not collect any personal information from users of our Software.
In particular, we do <u>not</u> collect the following categories of personal information
from you:
</p>
<ul className='ml-10 list-disc'>
<li>
<b>Identifiers</b>. We do not collect name, email address, contact information, financial
information, transaction history, or device information.
</li>
<li>
<b>Cookies</b>. We do not collect log data, use cookies, or similar tracking technologies
to track user activity on our Software.
</li>
<li>
<b>Private Keys</b>. We will never ask you to share your private keys or wallet seed.
Never trust anyone or any site that asks you to enter your private keys or wallet seed.
</li>
</ul>
<p className='text-xl font-bold'>We Do Not Use or Share Your Personal Information</p>
<p>
Because we do not collect any personal information from you through the Software, we also do
not use such information or share such information to any third parties.
</p>
<p className='text-xl font-bold'>Third-party RPC Endpoints and Frontends</p>
<p>
Prax Wallet connects to a user-specified Remote Procedure Call (“<b>RPC</b>”) endpoint.
While the Penumbra protocol is designed to minimize information transmitted in RPC requests,
Penumbra Labs cannot make any guarantees about the privacy practices of third-party RPC
services. Similarly, Prax Wallet allows third-party web frontends to request connections to
the wallet and interact with user data. While Prax Wallet is designed to put users in
control of their data, Penumbra Labs cannot make any guarantees about the privacy practices
of third-party frontends.
</p>
<p className='text-xl font-bold'>Changes to This Privacy Policy</p>
<p>
We reserve the right to update or change our Privacy Policy at any time. We will notify you
of any changes by posting the new Privacy Policy on this page. You are advised to review
this Privacy Policy periodically for any changes.
</p>
<p className='text-xl font-bold'>Contact Us</p>
<p>
If you have any questions about this Privacy Policy, please contact us at{' '}
<a href='mailto:[email protected]' className='underline'>
[email protected]
</a>
.
</p>
</div>
);
};
14 changes: 14 additions & 0 deletions apps/prax-marketing-site/src/components/root-router.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { createHashRouter } from 'react-router-dom';
import { Index } from '.';
import { PrivacyPolicy } from './privacy-policy';

export const rootRouter = createHashRouter([
{
path: '/',
element: <Index />,
},
{
path: 'privacy-policy',
element: <PrivacyPolicy />,
},
]);
3 changes: 3 additions & 0 deletions apps/prax-marketing-site/src/globals.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
12 changes: 12 additions & 0 deletions apps/prax-marketing-site/src/main.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { createRoot } from 'react-dom/client';
import { RouterProvider } from 'react-router-dom';
import { rootRouter } from './components/root-router';

import './globals.css';

const Main = () => {
return <RouterProvider router={rootRouter} />;
};

const rootElement = document.getElementById('root') as HTMLDivElement;
createRoot(rootElement).render(<Main />);
1 change: 1 addition & 0 deletions apps/prax-marketing-site/tailwind.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default } from '@penumbra-zone/tailwind-config';
5 changes: 5 additions & 0 deletions apps/prax-marketing-site/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"extends": "tsconfig/vite.json",
"include": ["src", "*.ts", "__mocks__", "eslint.config.mjs"],
"exclude": ["node_modules"]
}
7 changes: 7 additions & 0 deletions apps/prax-marketing-site/vite.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react-swc';

export default defineConfig({
base: './',
plugins: [react()],
});
1 change: 1 addition & 0 deletions packages/bech32m/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/bech32m",
"version": "5.0.0",
"private": true,
"license": "(MIT OR Apache-2.0)",
"description": "Tools for manipulating Penumbra bech32m strings",
"type": "module",
Expand Down
1 change: 1 addition & 0 deletions packages/client/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/client",
"version": "6.0.1",
"private": true,
"license": "(MIT OR Apache-2.0)",
"description": "Package for connecting to any Penumbra extension, including Prax.",
"type": "module",
Expand Down
1 change: 1 addition & 0 deletions packages/crypto/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/crypto-web",
"version": "3.0.10",
"private": true,
"license": "(MIT OR Apache-2.0)",
"type": "module",
"scripts": {
Expand Down
1 change: 1 addition & 0 deletions packages/eslint-config/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/eslint-config",
"version": "1.0.1",
"private": true,
"license": "(MIT OR Apache-2.0)",
"main": "eslint.config.mjs",
"exports": {
Expand Down
1 change: 1 addition & 0 deletions packages/getters/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/getters",
"version": "6.1.0",
"private": true,
"license": "(MIT OR Apache-2.0)",
"description": "Convenience getters for the deeply nested optionals of Penumbra's protobuf types",
"type": "module",
Expand Down
1 change: 1 addition & 0 deletions packages/keys/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/keys",
"version": "4.1.0",
"private": true,
"license": "(MIT OR Apache-2.0)",
"description": "Tool to download proving keys for Penumbra",
"type": "module",
Expand Down
1 change: 1 addition & 0 deletions packages/perspective/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/perspective",
"version": "4.0.1",
"private": true,
"license": "(MIT OR Apache-2.0)",
"description": "Tools for assuming different perspectives of Penumbra transactions",
"type": "module",
Expand Down
1 change: 1 addition & 0 deletions packages/protobuf/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/protobuf",
"version": "4.1.0",
"private": true,
"license": "(MIT OR Apache-2.0)",
"description": "Exports a `@bufbuild/protobuf` type registry with all message types necessary to communicate with a Penumbra extension",
"type": "module",
Expand Down
1 change: 1 addition & 0 deletions packages/services-context/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/services-context",
"version": "3.3.0",
"private": true,
"license": "(MIT OR Apache-2.0)",
"type": "module",
"scripts": {
Expand Down
1 change: 1 addition & 0 deletions packages/services/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/services",
"version": "4.1.0",
"private": true,
"license": "(MIT OR Apache-2.0)",
"type": "module",
"scripts": {
Expand Down
1 change: 1 addition & 0 deletions packages/storage/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@penumbra-zone/storage",
"version": "4.0.0",
"private": true,
"license": "(MIT OR Apache-2.0)",
"type": "module",
"scripts": {
Expand Down
Loading
Loading