A data publishing utility that allows trusted organizations and individuals to share data using standard HTTP methods.
Source Cooperative is operational and available at https://source.coop, providing access to over 800TB of data.
A new version of the Source Cooperative web app called S2 is under active development. It is currently only available to be deployed locally and is not yet available in staging or production environments.
The project documentation is organized in the docs/ directory with the following structure:
docs/
├── architecture/ # System architecture and design
│ ├── overview.md # High-level system overview
│ ├── data-model.md # Data structures and relationships
│ ├── storage.md # Storage architecture details
│ └── authentication.md # Authentication and authorization
├── development/ # Development guidelines
│ ├── setup.md # Development environment setup
│ ├── coding-standards.md # Coding standards and practices
│ ├── testing.md # Testing guidelines and protocols
│ └── performance.md # Performance optimization guidelines
├── roadmap/ # Project roadmap and planning
│ ├── overview.md # High-level roadmap
│ ├── current.md # Current sprint and priorities
│ └── future.md # Future considerations
└── releases/ # Release information
└── changelog.md # Detailed changelog
- Architecture: System design, data models, and technical decisions
- Development: Guidelines for contributing and development practices
- Roadmap: Project planning and future development stages
- Releases: Version history and changelog
- Node.js 22
- Docker and Docker Compose
- Git
- AWS CLI (for local DynamoDB interaction)
- Clone the repository
- Copy
.env.exampleto.env.local - Install dependencies:
npm install - Start development server:
npm run dev
The application requires a DynamoDB instance for data storage. We've added several convenience scripts to manage the local DynamoDB:
# Start DynamoDB (will prompt for table initialization if needed)
npm run start-dynamodb
# Check if DynamoDB is running
npm run check-dynamodb
# Initialize DynamoDB tables and sample data
npm run init-localWhen you run npm run dev, the system automatically:
- Checks if DynamoDB is running
- Starts DynamoDB if it's not running
- Skips initialization if tables already exist
- Local DynamoDB running on port 8000
- Local file storage in
./test-storage - Ory Kratos for authentication
- Environment variables in
.env.local
See Development Guidelines for detailed information about contributing to the project.
This project is licensed under the MIT License - see the LICENSE file for details.
- Follow the patterns outlined in
CURSOR_RULES.md - Components use Radix UI for consistent theming
- Pages follow Next.js 13+ App Router conventions
- TypeScript is used throughout the project
# Development
npm run dev # Start development server
# npm run build # Build production bundle
# npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # Run TypeScript checksCommon Issues:
-
Build errors
- Ensure all dependencies are installed
- Clear
.nextdirectory and rebuild
rm -rf .next npm run build
-
Environment variables not working
- Verify
.env.localexists and is properly configured - Restart the development server
- Verify
-
Type errors
- Run
npm run type-checkto identify issues - Ensure types are properly imported
- Run
Copyright 2024 Radiant Earth