# Nextcloud Share for Game Consoles [![Build Status](https://git.tomusan.com/badges/build-status.svg)](https://git.tomusan.com) [![License](https://img.shields.io/badge/license-TBD-blue.svg)](LICENSE) A cross-platform homebrew application for game consoles that enables users to upload screenshots, recordings, and other files directly from their devices to Nextcloud servers. ## ๐ŸŽฎ Supported Platforms ### Current - **Nintendo 3DS** (CIA and 3DSX formats) ### Planned - Nintendo Switch - Nintendo Wii U - PlayStation Vita - Android / iOS - PC (Windows, Linux, macOS) ## โœจ Features - ๐Ÿ“ Browse local filesystem (SD card, internal storage) - โ˜๏ธ Upload files directly to Nextcloud via WebDAV - ๐Ÿ”— Support for custom Nextcloud server URLs - โญ Save favorite upload folders - ๐Ÿ• Quick access to recently used folders - ๐Ÿ”’ Secure credential storage - ๐Ÿ“Š Upload progress tracking - ๐ŸŽฏ User-friendly interface optimized for each platform ## ๐Ÿ—๏ธ Project Structure ``` nextcloud-share/ โ”œโ”€โ”€ shared/ # Shared C/C++ library (libnextcloud) โ”œโ”€โ”€ 3ds/ # Nintendo 3DS homebrew app โ”œโ”€โ”€ docker/ # Container definitions for build environments โ”œโ”€โ”€ scripts/ # Build and utility scripts โ””โ”€โ”€ .plans/ # Feature plans and documentation ``` ## ๐Ÿ“‹ Prerequisites To build this project, you only need: - **Podman** (or Docker) - All build tools run in containers - **Git** - For version control You do **NOT** need to install: - devkitARM, devkitPro, or other platform SDKs - Platform-specific toolchains - Cross-compilers Everything runs in isolated containers! ## ๐Ÿš€ Quick Start ### 1. Clone the Repository ```bash git clone https://git.tomusan.com/your-username/nextcloud-share.git cd nextcloud-share ``` ### 2. Configure Test Environment Copy the example configuration file: ```bash cp config.example config ``` Edit `config` and add your test Nextcloud credentials: ```ini # Local test configuration - DO NOT COMMIT THIS FILE NEXTCLOUD_URL=https://your-nextcloud-instance.com NEXTCLOUD_USER=your-username NEXTCLOUD_PASSWORD=your-password ``` **Note**: The `config` file is in `.gitignore` and will never be committed. Each developer should create their own local config. ### 3. Build Using Podman #### Build the 3DS version: ```bash # Build the container image (first time only) podman build -f docker/devkitarm.Dockerfile -t nextcloud-share-3ds . # Compile the project podman run --rm -v ./:/project:z nextcloud-share-3ds make -C 3ds # Output files will be in 3ds/build/ ``` #### Run tests: ```bash podman run --rm -v ./:/project:z nextcloud-share-3ds make test ``` #### Interactive development shell: ```bash podman run --rm -it -v ./:/project:z nextcloud-share-3ds bash ``` ## ๐Ÿ”ง Building Detailed build instructions for each platform will be added as they are implemented. See platform-specific README files: - [3ds/README.md](3ds/README.md) - Nintendo 3DS build instructions - More coming soon... ## โš™๏ธ Configuration ### Local Development Configuration The `config` file (copied from `config.example`) is used for local testing: ```ini NEXTCLOUD_URL=https://cloud.example.com NEXTCLOUD_USER=testuser NEXTCLOUD_PASSWORD=testpass MAX_RECENT_FOLDERS=5 # Build-time option ``` ### CI/CD Environment Variables For CI/CD pipelines, use environment variables to override the local config: - `NEXTCLOUD_TEST_URL` - Test server URL - `NEXTCLOUD_TEST_USER` - Test username - `NEXTCLOUD_TEST_PASSWORD` - Test password - `MAX_RECENT_FOLDERS` - Number of recent folders to track Example: ```bash NEXTCLOUD_TEST_URL=https://cloud.tomusan.com \ NEXTCLOUD_TEST_USER=ci-user \ NEXTCLOUD_TEST_PASSWORD=ci-pass \ podman run --rm -v ./:/project:z nextcloud-share-3ds make ``` ## ๐Ÿงช Testing ```bash # Run unit tests podman run --rm -v ./:/project:z nextcloud-share-3ds make test # Run integration tests (requires valid Nextcloud credentials in config) podman run --rm -v ./:/project:z nextcloud-share-3ds make integration-test ``` ## ๐Ÿค Contributing We use the **git-flow** workflow: 1. Fork the repository 2. Create a feature branch: `git checkout -b feature/my-feature develop` 3. Commit your changes following our style guide 4. Push to your fork and submit a pull request to `develop` See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines (coming soon). ## ๐Ÿ“ Development Workflow 1. Issues are tracked on Gitea: https://git.tomusan.com 2. Feature plans are documented in `.plans/` 3. Each feature gets its own branch following git-flow conventions 4. All builds and tests run in containers 5. CI/CD automatically validates pull requests ## ๐Ÿ—บ๏ธ Roadmap See [.plans/CreateProject.md](.plans/CreateProject.md) for the complete project plan and milestones. Key upcoming features: - โœ… Nintendo 3DS support - โณ Additional platform support (Switch, Wii U, Vita) - โณ OAuth2 authentication - โณ Automatic screenshot detection - โณ Folder synchronization ## ๐Ÿ“– Documentation - [Project Creation Plan](.plans/CreateProject.md) - [User Guide](docs/user-guide.md) *(coming soon)* - [Developer Guide](docs/developer-guide.md) *(coming soon)* - [API Documentation](docs/api.md) *(coming soon)* ## ๐Ÿ“„ License [License TBD - to be determined] ## ๐Ÿ™ Acknowledgments - devkitPro team for homebrew toolchains - Nextcloud community - All contributors to this project ## ๐Ÿ“ž Support - Issue Tracker: https://git.tomusan.com/your-username/nextcloud-share/issues - Documentation: https://git.tomusan.com/your-username/nextcloud-share/wiki --- **Note**: This project is in active development. Features and documentation are being added continuously.