A software development platform specializing in Distributed Ledger Technology solutions and AI
Live Demo β’ AI Agent Guide β’ In-App Docs β’ API Docs
Wrytes is a Swiss R&D company specializing in software development for Distributed Ledger Technologies and AI. We create cutting-edge tools, protocol adapters, and full-stack applications. Our proprietary Bitcoin option trading strategies provide independent funding for continuous innovation and research.
- π° Profit-Driven Independence - Operating exclusively with company assets, trading profits fund R&D
- π¬ Research-First Development - Every tool serves our research and innovation goals
- π§© Component Reusability - Maximize reuse of existing components before building new ones
- π± Mobile-First Responsive - Consistent patterns across all features
- π’ Swiss Precision - Built with meticulous attention to detail and quality
- π§ Feature-Based Structure - Each major feature is self-contained and pluggable
- π» Software Development (Core) - Full-stack solutions for Distributed Ledger Technologies and AI
- π οΈ Technical Services (Revenue) - Development services for clients and partners
- π Platform Development (Innovation) - Proprietary tools and research prototyping
- π€ Strategic Partnerships (Growth) - Technology sharing and collaboration agreements
- π Protocol Integrations (Current) - Multi-protocol adapters and system integrations
- π Transaction Management Systems (Current) - Advanced deployment and monitoring tools
- βοΈ Platform Operations Tools (Future) - Enhanced infrastructure and automation systems
- π R&D Innovation Tools (Future) - Cutting-edge technology research and development
Wrytes AG is a Swiss company based in Zug, Switzerland (Crypto Valley), specializing in:
- Software Development & Distributed Ledger Technologies - Full-stack solutions from smart contracts to applications
- Protocol Adapters & System Integrations - Advanced tools for Distributed Ledger ecosystems
- Technical Consulting & Development Services - Expert development services for clients and partners
- Platform Development & Innovation - Cutting-edge technology research and prototyping
- Proprietary Asset Management - Independent revenue through Bitcoin option trading strategies funding R&D
- Strategic Partnerships - Technology sharing and collaboration agreements
- No Passwords - Identity proven by signing a cryptographic challenge with a connected wallet
- Telegram 2FA - Every login is approved or denied from a linked Telegram account
- Multi-Wallet Support - MetaMask, WalletConnect, Coinbase Wallet, Safe (multisig)
- Scope-Based Access Control - JWT-encoded scopes gate features at the component and page level (
ADMINbypasses all checks)
- RL Trading Agents - Train and run PPO/DQN/A2C reinforcement-learning agents for Bitcoin options
- Backtest, Paper & Live Runs - Promote a trained model from historical replay to live Deribit orders
- Training Sessions & Model Registry - Track hyperparameters, rewards, and model artifacts per run
- Token Transfer Classification - Categorize on-chain transfers against a chart of accounts
- Journal Templates - Configurable accounting templates per quarter
- Native Browser Export - Print/export reports without a PDF dependency
- AI Document Extraction - Upload a bill; the platform extracts line items and assigns a payment address
- Payment Tracking - Manage bills end-to-end from upload to settlement
- Kraken Integration - Convert between fiat and crypto using linked Kraken API credentials
- Execution History - Full audit trail of on-ramp and off-ramp conversions
- Warm Off-White Light Theme - Professional Swiss design aesthetic with a consistent brand-orange accent
- Responsive Design - Mobile-first, works on all devices
- Loading States - Skeleton components and smooth transitions
- Error Handling - Graceful fallbacks and user-friendly messages
- Transaction Queue - Redux-powered batch transaction management UI
- Next.js 16.1.4 - React framework with Pages Router
- React 19.1.0 - Latest React with concurrent features
- TypeScript 5.8.2 - Full type safety
- Wagmi 2.16.1 - React hooks for Ethereum
- Viem 2.33.2 - TypeScript Ethereum library
- Reown AppKit 1.6.4 - Multi-wallet connection
- Apollo Client 3.13.9 - GraphQL state management
- Tailwind CSS 3.4.17 - Utility-first CSS framework
- Framer Motion 12.23.12 - Advanced animations
- Headless UI 2.2.7 - Accessible UI components
- FontAwesome 7.0.0 - Professional icon system
- Redux Toolkit 2.8.2 - Global state management
- React Redux 9.2.0 - React bindings for Redux
- Redux Persist 6.0.0 - State persistence
- React Hook Form 7.61.1 - Performant forms
- Zod 4.0.14 - Schema validation
- React Hot Toast 2.5.2 - Toast notifications
- Turbopack - Fast development bundler
- ESLint - Code linting and formatting
- Prettier - Code formatting
- GraphQL Codegen - Type-safe GraphQL
wrytes/
βββ components/ # π§© Reusable UI Components
β βββ ui/ # Generic UI primitives (ALWAYS REUSE THESE)
β β βββ input/ # ButtonInput, TextInput, TokenInput, SelectInput, ...
β β βββ layout/ # PageHeader, Section, Breadcrumb
β β βββ modal/ # Modal system with confirm variants
β β βββ stats/ # Metric display components
β β βββ table/ # Table, TableRow, TableHeadSearchable, ...
β βββ features/ # π Feature-specific components
β β βββ accounting/ # Coin-tracking / accounting feature module
β β βββ routes/ # On/off-ramp routes feature
β β βββ deribitAgent/ # Deribit Agent shared components
β β βββ [feature]/ # Other feature modules
β βββ layouts/ # π Layout components (AppLayout, section variants)
β βββ landing/ # π Landing page sections
βββ hooks/ # π Custom React hooks
β βββ redux/ # Redux state hooks
β βββ ui/ # Generic UI hooks
β βββ web3/ # Web3 interaction hooks
β βββ [feature]/ # Feature-specific hooks
βββ lib/ # π οΈ Business logic & integrations
β βββ navigation/ # Nav configs β one file per section
β βββ web3/ # Web3 configuration
β βββ graphql/ # GraphQL client & queries
β βββ deribit-agent/ # Deribit Agent API client
β βββ utils/ # Utility functions
βββ redux/ # π Global state management
β βββ slices/ # Feature-specific slices
βββ docs/ # π In-app documentation content (rendered at /docs)
βββ pages/ # π Next.js pages (dashboard, deribit-agent, routes,
# invoices, coin-tracking, legal, docs, auth)
See CLAUDE.md for the full, actively-maintained structure reference.
Before building new components, check these locations:
-
components/ui/- Generic UI primitivesinput/ButtonInput.tsx- Variants:primary | secondary | outline | ghost | errorCard.tsx- Flexible card with header, content, footermodal/- Complete modal system with confirm variantsstats/- Metric display with various layoutstable/- Generic table/row components with searchable headers
-
components/layouts/- Shared layout piecesAppLayout.tsx- Generic layout shell β injectlogo,navItems,isActive,headerRight,mobileExtraactions/WalletButton.tsx- Self-contained wallet connect/displayfooters/FooterSimple.tsx- Minimal footer strip rendered byAppLayoutautomatically
-
components/features/[existing-feature]/- Feature-specific patterns- Reuse patterns from
routes/ortokenTransfers/for data-heavy features
- Reuse patterns from
-
hooks/ui/- Generic UI hooksuseModal.ts- Modal state management
-
hooks/redux/- Redux state management hooksuseTransactionQueue.ts- Transaction queue management
- Node.js 18+
- Yarn (required, not npm)
- Git
# Clone the repository
git clone https://github.com/wrytes/wrytes-app.git
cd wrytes-app
# Install dependencies
yarn install
# Copy environment variables
cp .env.example .env.local
# Configure your environment variables
# Edit .env.local with your API keys and endpoints
# Start development server
yarn devCreate .env.local from .env.example and configure:
# API Configuration
NEXT_PUBLIC_APP_URL=https://wrytes.io
NEXT_PUBLIC_API_URL=https://api.wrytes.io
NEXT_PUBLIC_INDEXER_URL=https://indexer.wrytes.io
NEXT_PUBLIC_DERIBIT_AGENT_URL=https://deribit-agent.api.wrytes.io
# Web3 Configuration
NEXT_PUBLIC_REOWN_PROJECT_ID=your_project_id_here
NEXT_PUBLIC_RPC_URL=your_alchemy_api_key
# Optional: App Analytics
NEXT_PUBLIC_UMAMI_URL=https://analytics.wrytes.io
NEXT_PUBLIC_UMAMI_WEBSITE_ID=your_umami_website_idyarn dev # Start development server (with Turbopack)
yarn build # Build for production
yarn start # Start production server
yarn type-check # TypeScript type checkingyarn lint # Run ESLint
yarn lint:fix # Fix ESLint errors automatically
yarn format # Format code with Prettier
yarn format:check # Check code formattingyarn analyze # Analyze bundle size- Feature-Based Organization - Components grouped by business domain
- Composition Pattern - Reusable component composition
- Custom Hooks - Business logic extraction from components
- TypeScript Interfaces - Comprehensive type definitions
- Redux Toolkit - Global application state (transactions, user preferences, queue management)
- Apollo Client Cache - GraphQL data caching and normalization
- React Context - Authentication and namespace management
- Local State - Component-level UI state
User Action β Component β Custom Hook/Adapter β API/Contract β Apollo Cache/Redux β UI Update
Wrytes uses wallet-based authentication with Telegram as a second factor β there are no passwords.
- User connects a wallet (MetaMask, WalletConnect, Coinbase, Safe)
- Backend issues a one-time challenge message with a nonce
- User signs the message with their wallet (no gas required)
- A request is sent to the user's linked Telegram account for approval; the app polls until it's approved, denied, or times out
- Once approved, the backend issues a JWT (scopes included) and the frontend stores it locally
- Each account holds an array of scopes encoded in its JWT
ADMINbypasses all scope checks and grants full access- Named feature scopes gate individual sections via
<RequireScope>at the component level
See the in-app Authentication and Access Control docs for full detail.
-
Create Feature Directory:
components/features/[featureName]/ βββ index.ts # Feature exports βββ types.ts # Feature-specific types βββ [FeatureName].tsx # Main feature component βββ [sub-components].tsx # Feature sub-components -
Create Feature Hooks:
hooks/[feature]/ βββ index.ts # Hook exports βββ use[Feature]Data.ts # Data fetching βββ use[Feature]Actions.ts # Feature actions -
Add to Navigation:
lib/navigation/[section].ts -
Follow Existing Patterns:
- Use
routes/ortokenTransfers/as reference for data-heavy features - Reuse
ui/components extensively
- Use
- Reuse existing UI components from
components/ui/ - Create feature-specific hooks in
hooks/[feature]/ - Add to navigation system
- Implement proper loading states
- Add error boundaries
- Include proper TypeScript types
- Add to Redux if global state needed
- Integrate with transaction queue system if transactions required
We welcome contributions from the community! Please read our contributing guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
yarn type-check && yarn lint) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- TypeScript strict mode - No
anytypes - ESLint + Prettier - Consistent code formatting
- Comprehensive type definitions - Full type safety
- Component testing - Test critical functionality
- Component reusability - Always check existing components first
This project is proprietary software of Wrytes AG. All rights reserved.
- π’ Address: Zug, Switzerland
- π Website: wrytes.io
- π§ Contact: hello@wrytes.io
- π§ Technical Issues: Create an issue on GitHub
- π‘ Feature Requests: Create an issue on GitHub
- π Bug Reports: hello@wrytes.io
Built with π¨π Swiss precision by Wrytes AG
Software Development & Distributed Ledger Technologies & AI
Remember: This is an R&D Platform for Profit-Driven Innovation
This platform serves Wrytes AG's core mission: using proprietary Bitcoin trading strategies to fund continuous blockchain research and development. Every technical decision should consider:
- How does this serve our R&D and trading operations?
- Can this pattern be reused for future research tools?
- Is this component generic enough for multiple business functions?
- Does this maintain Swiss precision and quality standards?
- How will this scale as our research and business operations grow?
Think software-development-first, research-driven-innovation, technical-excellence-always.