One Single RESTful API for Collaborating, Sharing, and Streaming Data
Restcol
is a RESTful document storage solution designed for collaboration, built to work with any kind of storage backend. It organizes data into collections and documents, providing a flexible and scalable way to manage and share data. Collections group documents with similar schemas, enabling schema evolution tracking over time, while documents store client data in formats like JSON, CSV, XML, or even media files. No predefined schema is required—schemas are dynamically created or updated with each document request.
This project aims to simplify data collaboration and streaming by offering a unified API that adapts to your application's needs.
- Flexible Storage: Works with any storage backend.
- Collections: Organizes documents with similar schemas for easy management and schema change detection.
- Dynamic Schemas: Automatically creates or modifies schemas based on document requests—no upfront schema definition needed.
- Supported Formats: Handles JSON, CSV, XML, and media data.
- RESTful API: Simple, intuitive endpoints for collaboration and data streaming.
-
Clone the repository:
git clone https://github.com/FootprintAI/restcol.git cd restcol
-
Install dependencies (assuming a Go-based project; adjust if different):
go mod tidy
-
Build and run:
go build ./restcol
Note: Specific setup instructions may vary depending on your environment and storage backend. Check the source code or configuration files for additional requirements.
To create a collection and add a document via the API:
# Create a new collection
curl -X POST http://localhost:8080/collections -d '{"name": "my-collection"}'
# Add a document to the collection
curl -X POST http://localhost:8080/collections/my-collection/documents -d '{"data": {"id": 1, "name": "example"}}'
For detailed API documentation, refer to the API Reference section (to be added).
- Storage Backend: Configure your preferred storage system (e.g., local filesystem, S3, etc.) in the config file or environment variables.
- Port: Default is
8080
. Override with thePORT
environment variable.
Example configuration:
export STORAGE_TYPE="filesystem"
export STORAGE_PATH="/path/to/storage"
export PORT=8080
We welcome contributions! To get started:
- Fork the repository.
- Create a feature branch:
git checkout -b my-feature
. - Commit your changes:
git commit -m "Add my feature"
. - Push to your fork:
git push origin my-feature
. - Open a pull request.
Please read our Contributing Guidelines for more details (to be created if not present).
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
- Add support for additional storage backends.
- Implement real-time streaming capabilities.
- Enhance schema versioning and migration tools.
For questions or support, open an issue on the GitHub Issues page or reach out to the FootprintAI team.
Maintained by FootprintAI
Last updated: March 02, 2025