Arche is a decentralized academic paper publishing platform built on the Internet Computer blockchain.
- Decentralized paper hosting and distribution
- User authentication and profile management
- Paper categorization and search
- Citation management
- Version control for papers
The project follows Clean Architecture principles with distinct layers (see detailed architecture documentation):
┌───────────────────┐
│ Frontend │ SolidJS + TypeScript UI
├───────────────────┤
│ Entry Points │ API endpoints and guards
├───────────────────┤
│ Controllers │ Request/response handling
├───────────────────┤
│ Use Cases │ Application business logic
├───────────────────┤
│ Domain │ Core business logic and entities
├───────────────────┤
│ Infrastructure │ Data persistence and external services
└───────────────────┘
-
Backend:
- Rust
- Internet Computer (ICP)
- Candid Interface Description Language (IDL)
-
Frontend:
- SolidJS
- TypeScript
- TanStack Router
- TanStack Query
- Tailwind CSS
├── crates/ # Rust workspace crates
│ ├── backend/ # Backend implementation
│ ├── domain/ # Domain layer (entities, value objects)
│ ├── interface/ # Interface definitions
│ └── util/ # Shared utilities
│
├── frontend/ # SolidJS frontend application
│ ├── public/ # Static assets
│ └── src/ # Source code
│ ├── components/ # SolidJS components
│ ├── contexts/ # SolidJS contexts
│ ├── features/ # Feature modules
│ └── routes/ # Application routes
│
└── dfx.json # Internet Computer project configuration
- Fork and clone the repository:
# First, fork the repository on GitHub, then clone your fork using your repository URL:
git clone <repository-url>
cd arche- Install dependencies:
# Install Rust dependencies
cargo build
# Install frontend dependencies
pnpm install- Start the development environment:
# Start the Internet Computer local network
dfx start --pocketic
# Deploy the canisters
dfx deps pull && dfx deps init --argument '(null)' internet-identity && dfx deps deploy && dfx deploy backend
# Start the frontend development server
pnpm startThe application will be available at http://localhost:3000/.
- Make changes to the Rust backend:
cargo build
cargo test
dfx deps pull && dfx deps init --argument '(null)' internet-identity && dfx deps deploy && dfx deploy backend- Make changes to the frontend:
pnpm start # Development server
pnpm build # Production build
pnpm test # Run tests- Update Candid bindings:
pnpm generate- Create a feature branch
- Make your changes
- Run tests
- Submit a pull request
# Run backend tests
cargo test
# Run frontend tests
pnpm testThis project is licensed under either of Apache License, Version 2.0 or MIT License at your option.