Files
nextcloud-share/README.md
2026-01-26 22:21:12 -08:00

5.6 KiB

Nextcloud Share for Game Consoles

Build Status 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

git clone https://git.tomusan.com/your-username/nextcloud-share.git
cd nextcloud-share

2. Configure Test Environment

Copy the example configuration file:

cp config.example config

Edit config and add your test Nextcloud credentials:

# 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:

# 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:

podman run --rm -v ./:/project:z nextcloud-share-3ds make test

Interactive development shell:

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 - Nintendo 3DS build instructions
  • More coming soon...

⚙️ Configuration

Local Development Configuration

The config file (copied from config.example) is used for local testing:

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:

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

# 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 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 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

📄 License

[License TBD - to be determined]

🙏 Acknowledgments

  • devkitPro team for homebrew toolchains
  • Nextcloud community
  • All contributors to this project

📞 Support


Note: This project is in active development. Features and documentation are being added continuously.