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. Docker Compose is used to run DynamoDB locally for development:
# Start DynamoDB and DynamoDB Admin
docker compose upThis will start:
- DynamoDB Local on port 8000
- DynamoDB Admin UI on port 8001 (accessible at http://localhost:8001)
- Bootstrap script that automatically initializes tables if they don't exist
The bootstrap script (init-db service) will:
- Run automatically when tables are not found
- Create all required DynamoDB tables
- Populate sample data for development
- Can be forced to reset tables by setting the
RESET_TABLESenvironment variable:
# Force reset and reinitialize tables
RESET_TABLES=true docker compose up- Local DynamoDB
- DynamoDB Admin UI
- 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