Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
40aca23
feat: new stack, in progress
kemuru Jun 6, 2025
5d1ff06
feat: sidebar, stylings
kemuru Jun 6, 2025
def19b2
feat: more structuring, started guide page, new ui library
kemuru Jun 14, 2025
7b0677f
feat: guide page completed, responsive
kemuru Jun 16, 2025
9f75824
feat: rewards page
kemuru Jun 16, 2025
caa82ea
Merge branch 'main' into feat/scout-new-website-infrastructure
kemuru Jun 17, 2025
b95560b
fix: responsiveness issues on phone, add sidebar to mobile
kemuru Jun 18, 2025
4b768e1
feat: activity page draft
kemuru Jul 1, 2025
71da12f
Merge remote-tracking branch 'origin/main' into feat/scout-new-websit…
kemuru Jul 1, 2025
51e1086
feat: continue with registries, stylings, perfect the sidebar
kemuru Jul 17, 2025
3bf32a7
feat: add chain icons, more stylings on cards
kemuru Jul 18, 2025
daacf99
fix: details button vertical positioning
kemuru Jul 18, 2025
4f83c32
feat: middle actionable elements, search, policy, submit button stylings
kemuru Jul 18, 2025
38b9d36
chore: more color mappings for the chains
kemuru Jul 18, 2025
9a46c96
feat: add hero titles and description, style, hero shadow, arrangement
kemuru Jul 19, 2025
184e031
feat: pagination, cardstatus tweak, bug in mobile, center loading gif
kemuru Jul 21, 2025
d3a4cd1
chore: change skeletons color
kemuru Jul 21, 2025
68e8c6d
feat: implement activity and make it address dynamic, pagination, sty…
kemuru Jul 30, 2025
1beaa06
fix: ongoing link
kemuru Aug 7, 2025
c7bb067
feat: dedicated item page, restructure subgraph fetching, restructure…
kemuru Aug 7, 2025
af8407a
feat: add filters component, gitignore generated hooks
kemuru Aug 7, 2025
b5fa4f4
chore: remove unused filters component, style copiable activity usera…
kemuru Aug 7, 2025
ee4ae45
feat: few style tweaks, use subgraph endpoint with changes
kemuru Aug 11, 2025
06ddf66
fix: netlify build crash
kemuru Aug 11, 2025
a01a54c
fix: netlify build crash
kemuru Aug 11, 2025
709317b
fix: netlify build crash
kemuru Aug 11, 2025
3998b50
fix: netlify build crash
kemuru Aug 11, 2025
c748208
feat: filters in users page, styling adjustments, etc etc etc
kemuru Aug 29, 2025
77cb691
chore: change subgraph endpoint
kemuru Aug 30, 2025
0bb8e4a
chore: env variables refactor
kemuru Aug 30, 2025
85569e5
chore: env variables refactor, consts refactor
kemuru Aug 30, 2025
e9ec6b9
chore: slight impro to latest disputes widget
kemuru Aug 30, 2025
d4d5fd7
feat: restyle dashboard home, fix codes, remove logs, fix tokens stats
kemuru Sep 1, 2025
84e3fb8
chore: style better latest disputes widget
kemuru Sep 2, 2025
c98ad63
feat: style impros, bug in carousels in dashboard home
kemuru Sep 2, 2025
18909cf
feat: simplify filtersmodal, activity page more wide on desktop
kemuru Sep 2, 2025
360b539
fix: filtersmodal in activity page working for statuses
kemuru Sep 4, 2025
12cea47
chore: chart to 30 days instead of 7
kemuru Sep 12, 2025
d0997bb
feat: address validation impros
kemuru Sep 13, 2025
a067b44
feat: add export list functionality
kemuru Sep 28, 2025
798def6
feat: add only and all buttons for filters
kemuru Sep 28, 2025
6bd916e
feat: improve ux-ui export modal
kemuru Sep 28, 2025
9f14d20
feat: improve styling export list modal
kemuru Sep 29, 2025
4b139c7
chore: delete duplicates, renamings
kemuru Oct 1, 2025
b242308
Merge branch 'main' into feat/scout-new-website-infrastructure
kemuru Oct 1, 2025
e45666c
chore: remove unused code
kemuru Oct 1, 2025
abca2bc
chore: envio-query-migration-scout-v2
tractorss Oct 1, 2025
ee9984b
fix: some types
kemuru Oct 9, 2025
36f3ac7
fix: users totalSubmissions stats
kemuru Oct 9, 2025
1816363
chore: minor query tweak
kemuru Oct 9, 2025
7603346
Merge pull request #55 from kleros/chore/envio-query-migration-scout-v2
kemuru Oct 9, 2025
d23c7b8
fix: resolve conflicts
kemuru Oct 9, 2025
fefda7d
chore: revert gitignore change
kemuru Oct 9, 2025
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
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,9 @@ dist
# Serverless Webpack directories
.webpack/

# generated code
websites/app/src/hooks/contracts/generated.ts

# Optional stylelint cache
.stylelintcache

Expand Down Expand Up @@ -205,6 +208,4 @@ subgraph/*/build/*
subgraph/*/contracts/*

# Local Netlify folder
.netlify

websites/app/.yarn
.netlify
8 changes: 0 additions & 8 deletions websites/app/.parcelrc

This file was deleted.

3 changes: 3 additions & 0 deletions websites/app/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"plugins": ["prettier-plugin-tailwindcss"]
}
8 changes: 8 additions & 0 deletions websites/app/netlify.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[build]
publish = "dist"
command = "wagmi generate && yarn run build"

[build.environment]
NODE_VERSION = "20.18.3"
YARN_VERSION = "4.8.1"
NPM_FLAGS = "--legacy-peer-deps"
41 changes: 29 additions & 12 deletions websites/app/package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
{
"name": "@kleros/perma-curate",
"name": "@kleros/scout",
"homepage": "./",
"source": "src/index.html",
"version": "0.1.0",
"license": "MIT",
"type": "module",
"alias": {
"src": "./src",
"utils": "./src/utils",
Expand All @@ -21,24 +22,35 @@
"gifs": "./src/assets/gifs"
},
"scripts": {
"start": "parcel",
"build": "parcel build --public-url ./"
"clean": "rimraf node_modules dist",
"start": "wagmi generate && vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@cyntler/react-doc-viewer": "^1.16.3",
"@kleros/kleros-app": "^2.0.2",
"@kleros/ui-components-library": "^3.4.5",
"@reown/appkit": "^1.7.1",
"@reown/appkit-adapter-wagmi": "^1.7.1",
"@scure/base": "^1.2.5",
"@solana/web3.js": "^1.98.0",
"@tanstack/react-query": "^5.12.2",
"@tanstack/react-query": "^5.69.0",
"@wagmi/connectors": "^5.7.11",
"@wagmi/core": "^2.16.7",
"bs58check": "^4.0.0",
"cross-fetch": "^4.0.0",
"ethers": "^6.8.0",
"graphql": "^16.8.1",
"graphql-request": "^6.1.0",
"humanize-duration": "^3.32.1",
"json-2-csv": "^5.5.9",
"overlayscrollbars": "^2.3.0",
"overlayscrollbars-react": "^0.5.2",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-error-boundary": "^4.1.2",
"react-identicons": "^1.2.5",
"react-loading-skeleton": "^3.4.0",
"react-markdown": "^8.0.7",
"react-modal": "^3.15.1",
Expand All @@ -47,28 +59,33 @@
"react-select": "^5.8.0",
"react-toastify": "^9.1.3",
"react-use": "^17.4.0",
"styled-components": "^5.3.9"
"recharts": "^3.1.2",
"styled-components": "^5.3.9",
"viem": "^2.24.1",
"wagmi": "^2.14.15"
},
"devDependencies": {
"@parcel/transformer-svg-react": "2.8.3",
"@parcel/watcher": "~2.2.0",
"@tanstack/eslint-plugin-query": "^5.12.1",
"@types/node": "^20.0.0",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"@types/react-modal": "^3.14.1",
"@types/react-router-dom": "5.3.3",
"@types/styled-components": "^5.1.26",
"@vitejs/plugin-react-swc": "^3.10.1",
"@wagmi/cli": "^2.3.2",
"autoprefixer": "^10.0.0",
"buffer": "^5.5.0",
"eslint": "^8.0.0",
"eslint-import-resolver-parcel": "^1.10.6",
"eslint-plugin-react": "^7.0.0",
"eslint-plugin-react-hooks": "^4.0.0",
"parcel": "2.8.3",
"postcss": "^8.0.0",
"process": "^0.11.10",
"typescript": "^4.9.5"
"typescript": "^4.9.5",
"vite": "^6.3.5",
"vite-plugin-node-polyfills": "^0.23.0",
"vite-plugin-svgr": "^4.3.0",
"vite-tsconfig-paths": "^5.1.4"
},
"eslintConfig": {
"extends": [
Expand All @@ -93,7 +110,7 @@
"singleQuote": true
},
"volta": {
"node": "18.19.1",
"yarn": "3.3.1"
"node": "20.18.3",
"yarn": "4.8.1"
}
}
84 changes: 57 additions & 27 deletions websites/app/src/app.tsx
Original file line number Diff line number Diff line change
@@ -1,36 +1,66 @@
import React, { useRef } from 'react'
import styled from 'styled-components'
import 'overlayscrollbars/styles/overlayscrollbars.css'
import 'react-loading-skeleton/dist/skeleton.css'
import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'
import { OverlayScrollContext } from 'context/OverlayScrollContext'
import Home from 'pages/Home'
import StyledComponentsProvider from 'context/StyledComponentsProvider'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import React, { lazy, Suspense, useRef } from 'react';
import styled from 'styled-components';
import { ErrorBoundary } from "react-error-boundary";
import 'overlayscrollbars/styles/overlayscrollbars.css';
import 'react-loading-skeleton/dist/skeleton.css';
import { OverlayScrollbarsComponent } from 'overlayscrollbars-react';
import { OverlayScrollContext } from 'context/OverlayScrollContext';
import StyledComponentsProvider from 'context/StyledComponentsProvider';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { Routes, Route, Navigate } from 'react-router-dom';
import Layout from './layout';
import Web3Provider from "context/Web3Provider";
import ErrorFallback from "./components/ErrorFallback";
import Registries from './pages/Registries/';
import ItemDetails from './pages/ItemDetails/';

const Dashboard = lazy(() => import('pages/Dashboard'));

const StyledOverlayScrollbarsComponent = styled(OverlayScrollbarsComponent)`
height: 100vh;
width: 100vw;
`
const queryClient = new QueryClient()
`;

const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: 3,
retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000),
staleTime: 10000,
refetchOnWindowFocus: false,
refetchOnReconnect: true,
},
},
});

const App: React.FC = () => {
const containerRef = useRef(null)
const containerRef = useRef(null);

return (
<OverlayScrollContext.Provider value={containerRef}>
<StyledOverlayScrollbarsComponent
ref={containerRef}
options={{ showNativeOverlaidScrollbars: true }}
>
<StyledComponentsProvider>
<QueryClientProvider client={queryClient}>
<Home />
</QueryClientProvider>
</StyledComponentsProvider>
</StyledOverlayScrollbarsComponent>
</OverlayScrollContext.Provider>
)
}
<StyledComponentsProvider>
<OverlayScrollContext.Provider value={containerRef}>
<StyledOverlayScrollbarsComponent ref={containerRef} options={{ showNativeOverlaidScrollbars: true }}>
<ErrorBoundary FallbackComponent={ErrorFallback}>
<Web3Provider>
<QueryClientProvider client={queryClient}>
<Suspense fallback={null}>
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Navigate to="dashboard" replace />} />
<Route path="dashboard/*" element={<Dashboard />} />
<Route path="registry/*" element={<Registries />} />
<Route path="item/:itemId" element={<ItemDetails />} />
<Route path="*" element={<h1>Page not found</h1>} />
</Route>
</Routes>
</Suspense>
</QueryClientProvider>
</Web3Provider>
</ErrorBoundary>
</StyledOverlayScrollbarsComponent>
</OverlayScrollContext.Provider>
</StyledComponentsProvider>
);
};

export default App
export default App;
27 changes: 27 additions & 0 deletions websites/app/src/assets/svgs/chains/arbitrum.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions websites/app/src/assets/svgs/chains/avalanche.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading