Webizen is a humanitarian ICT proof-of-concept and a decentralized social-web browser, refactored and modernized from the original Beaker Browser. It is delivered as a cross-platform solution: a WebExtension, an Electron desktop app, and a React Native mobile app.
This project aims to provide privacy-preserving, accessible, and decentralized social-web tools for social good, integrating cutting-edge technologies to empower users with data sovereignty and enhanced communication capabilities.
- Core Features
- Project Structure
- Getting Started
- Running the Application
- Running Tests
- Troubleshooting
- Contributing
- License
- Decentralized Identity: Utilizes ADP (Authenticated Data Protocol) and WebID for decentralized identity and call verification.
- Native Crypto Wallet: Integrates a native Cashtab wallet for eCash (XEC) and SLP token management, enabling micro-transactions and obligation cost tracking.
- Advanced Security: A comprehensive security module implementing SPHINCS+, ECDSA, RSA, AES, and Ed25519 for robust data protection.
- P2P Communication: Leverages WebTorrent, GUN.eco, and WebRTC for decentralized data transfer and real-time communication.
- Semantic Data: Built on a foundation of RDF, Quadstore, and versioned ontologies for structured, interoperable data.
- AI-Powered Accessibility: Features Chatterbox TTS for advanced, multilingual text-to-speech capabilities.
- Extensible API: A secure, WebSocket-based Webizen API allows for modular extensions and integrations.
- Cross-Platform: Delivered as an Electron desktop app, a WebExtension, and a React Native mobile app.
This repository uses a monorepo-like structure with two package.json files, which is inherited from the original Beaker Browser architecture:
scripts/package.json: Contains development dependencies (devDependencies) and scripts for building, running, and testing the application. All development commands should be run from thescripts/directory.app/package.json: Contains application dependencies (dependencies) that will be packaged with the final builds (Electron, React Native).modules/: Core application logic, separated by feature (e.g.,access,security,cashtab).services/: Shared services used across modules (e.g.,quadstore,crypto,webizen-api).ontologies/: Versioned RDF schemas that define the application's data structures.platforms/: Platform-specific entry points and configurations for Electron and React Native.
This separation is necessary because native Node.js modules need to be compiled against different runtimes: devDependencies against your local Node.js version, and dependencies against the Electron runtime.
- Node.js: v20.0.0 or higher.
- npm: v10.0.0 or higher.
- Build Tools: You will need a C++ compiler toolchain to build native dependencies.
- Windows: Install "Desktop development with C++" from the Visual Studio Installer. See node-gyp installation instructions.
- macOS: Install Xcode Command Line Tools (
xcode-select --install). - Linux: Install
build-essentialandpython3(sudo apt-get install build-essential python3).
- React Native: Follow the official "Environment Setup" guide for React Native CLI to configure Android Studio and/or Xcode.
-
Clone the repository:
git clone https://github.com/mediaprophet/socialweb.git cd socialweb -
Install dependencies from the
scriptsdirectory. This will also install theappdependencies.cd scripts npm install -
Rebuild native modules for Electron. This step is crucial after any installation or update of dependencies.
npm run rebuild
All commands should be run from the scripts/ directory.
To run the desktop application in development mode:
npm startTo build the WebExtension for loading into a browser:
npm run build(Note: This script will be fully implemented in a later task. It will create a dist/webext directory.)
Once built, load the extension into your browser:
- Navigate to
chrome://extensionsorabout:debugging. - Enable "Developer mode".
- Click "Load unpacked" and select the
dist/webextdirectory.
Ensure you have an emulator running or a device connected.
# For Android
npx react-native run-android
# For iOS
npx react-native run-iosThe project uses Jest for unit and integration testing.
npm testTo see code coverage, run:
npm test -- --coverage-
Native Module Errors on
npm install: Errors related tonode-gypusually mean your build toolchain is not set up correctly. Please refer to the Prerequisites section. -
Electron Fails to Start with Module Errors: If you see an error like
Module version mismatch, it means the native dependencies were not compiled correctly for Electron's Node.js runtime. Runnpm run rebuildfrom thescripts/directory to fix this. -
"Burnthemall" for a Clean Slate: If you encounter persistent or strange module errors after pulling updates, you can use the
burnthemallscript. This will completely remove allnode_modulesdirectories and perform a clean installation and rebuild.npm run burnthemall
The beaker browser project and various related componetns were / are licensed under the MIT License. A license is yet to be created for this presently incomplete project.