Creates initial project.
This commit is contained in:
289
README.md
289
README.md
@@ -1,87 +1,212 @@
|
||||
# Project Template
|
||||
# Nextcloud Share for Game Consoles
|
||||
|
||||
This repository is a starter template.
|
||||
Replace this README with documentation specific to your project once you begin development.
|
||||
[](https://git.tomusan.com)
|
||||
[](LICENSE)
|
||||
|
||||
The notes below apply only if you choose to build a Node.js project using this template.
|
||||
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
|
||||
|
||||
---
|
||||
|
||||
## If your project will use Node.js
|
||||
|
||||
Use Node 22 or newer for development.
|
||||
|
||||
Check your version:
|
||||
|
||||
```
|
||||
node --version
|
||||
```
|
||||
|
||||
If your version is older than 22, update using nvm:
|
||||
|
||||
```
|
||||
nvm install --lts
|
||||
```
|
||||
|
||||
(Optional) Make the new version your default:
|
||||
|
||||
```
|
||||
nvm alias default <version>
|
||||
```
|
||||
|
||||
After running `yarn init`, you may add a minimum Node version requirement to your `package.json`:
|
||||
|
||||
```json
|
||||
"engines": {
|
||||
"node": ">=22"
|
||||
}
|
||||
```
|
||||
|
||||
This helps ensure you do not accidentally use an outdated Node version.
|
||||
|
||||
---
|
||||
|
||||
## If your project will use Yarn (Berry)
|
||||
|
||||
This template assumes modern Yarn (Yarn 4+), managed by Corepack.
|
||||
|
||||
Enable Corepack:
|
||||
|
||||
```
|
||||
corepack enable
|
||||
```
|
||||
|
||||
Update Yarn to the latest stable version:
|
||||
|
||||
```
|
||||
corepack prepare yarn@stable --activate
|
||||
```
|
||||
|
||||
Install dependencies:
|
||||
|
||||
```
|
||||
yarn install
|
||||
```
|
||||
|
||||
If you want Yarn to error (instead of warn) when the Node version does not satisfy the `engines` field, add this to `.yarnrc.yml`:
|
||||
|
||||
```yaml
|
||||
enableStrictEngineChecks: true
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## If your project will use containers
|
||||
|
||||
If you plan to build or deploy using Docker, choose a base image that matches your development environment.
|
||||
For Node.js projects, a common choice is:
|
||||
|
||||
```
|
||||
FROM node:24
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Replace this README
|
||||
|
||||
Once you know what your project will be (Node, C++, Python, etc.), replace this file with documentation specific to your build, run, and deployment steps.
|
||||
**Note**: This project is in active development. Features and documentation are being added continuously.
|
||||
|
||||
Reference in New Issue
Block a user