Initial commit
This commit is contained in:
166
README.md
Normal file
166
README.md
Normal file
@@ -0,0 +1,166 @@
|
||||
# StandbyCal
|
||||
|
||||
An iOS app for standby calendar functionality, built with SwiftUI and managed by Tuist.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before you can build and run this project, you need to have the following tools installed:
|
||||
|
||||
### 1. Homebrew
|
||||
If you don't have Homebrew installed, install it first: https://brew.sh/
|
||||
|
||||
### 2. mise
|
||||
Install mise (a tool version manager) via Homebrew:
|
||||
```bash
|
||||
brew install mise
|
||||
```
|
||||
|
||||
### 3. Xcode
|
||||
Make sure you have Xcode installed from the Mac App Store or Apple Developer portal.
|
||||
|
||||
## Setup
|
||||
|
||||
1. **Clone the repository** (if applicable) or navigate to the project directory:
|
||||
```bash
|
||||
cd StandbyCal
|
||||
```
|
||||
|
||||
2. **Install Tuist using mise**:
|
||||
```bash
|
||||
mise install
|
||||
```
|
||||
This will automatically install Tuist as specified in the `mise.toml` file.
|
||||
|
||||
3. **Generate the Xcode project**:
|
||||
```bash
|
||||
tuist generate
|
||||
```
|
||||
|
||||
## Building and Running
|
||||
|
||||
### Option 1: Using Xcode
|
||||
|
||||
#### Prerequisites
|
||||
- Ensure you have completed the [Setup](#setup) steps above
|
||||
- Verify that `StandbyCal.xcworkspace` exists (run `tuist generate` if missing)
|
||||
|
||||
#### Steps
|
||||
1. **Open the workspace**:
|
||||
```bash
|
||||
tuist generate # this will create `StandbyCal.xcworkspace`
|
||||
xed StandbyCal.xcworkspace # open in xcode
|
||||
```
|
||||
> ⚠️ **Important**: Always open the `.xcworkspace` file, not the `.xcodeproj` file, to ensure all dependencies are properly loaded.
|
||||
|
||||
|
||||
### Option 2: Using Command Line
|
||||
```bash
|
||||
# Build the project
|
||||
tuist build
|
||||
|
||||
# Run tests
|
||||
tuist test
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
StandbyCal/
|
||||
├── README.md
|
||||
├── mise.toml # Tool version management
|
||||
├── Project.swift # Tuist project configuration
|
||||
├── Tuist.swift # Tuist configuration
|
||||
├── StandbyCal/ # Main app target
|
||||
│ ├── Sources/ # Swift source files
|
||||
│ │ ├── StandbyCalApp.swift
|
||||
│ │ └── ContentView.swift
|
||||
│ ├── Resources/ # App resources
|
||||
│ │ └── Assets.xcassets/
|
||||
│ └── Tests/ # Unit tests
|
||||
├── StandbyCal.xcworkspace/ # Generated Xcode workspace
|
||||
└── StandbyCal.xcodeproj/ # Generated Xcode project
|
||||
```
|
||||
|
||||
## Key Configuration Files
|
||||
|
||||
### Project.swift
|
||||
This is the main configuration file that defines your project structure, targets, and dependencies. It's written in Swift and uses Tuist's `ProjectDescription` framework.
|
||||
|
||||
**Modify this file in order to:**
|
||||
- Add new targets (frameworks, extensions, etc.)
|
||||
```swift
|
||||
.target(
|
||||
name: "StandbyCalCore",
|
||||
destinations: .iOS,
|
||||
product: .framework,
|
||||
bundleId: "dev.xmaxsmi.standbycal.core",
|
||||
sources: ["StandbyCalCore/Sources/**"],
|
||||
dependencies: []
|
||||
)
|
||||
```
|
||||
- Update bundle identifiers and app metadata
|
||||
- Configure build settings and compiler flags
|
||||
- Add external dependencies (SPM packages, frameworks)
|
||||
```swift
|
||||
dependencies: [
|
||||
.external(name: "Alamofire"),
|
||||
.target(name: "StandbyCalCore")
|
||||
]
|
||||
```
|
||||
- Set up different configurations (Debug, Release, etc.)
|
||||
|
||||
**Project.swift Reference**: https://docs.tuist.io/manifests/project
|
||||
**Target Configuration**: https://docs.tuist.io/manifests/target
|
||||
**Dependencies Guide**: https://docs.tuist.io/guides/dependencies
|
||||
|
||||
### Tuist.swift
|
||||
This file configures Tuist itself and project-wide settings that affect how Tuist generates and manages your project.
|
||||
|
||||
**Modify this file in order to:**
|
||||
- Enable/disable Tuist features (caching, selective testing)
|
||||
- Define global settings that apply to all projects
|
||||
- Configure project generation behavior
|
||||
- Set up custom plugins and templates
|
||||
- Define environment-specific configurations
|
||||
|
||||
**Tuist.swift Reference**: https://docs.tuist.io/manifests/tuist
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Daily Development
|
||||
1. **Make changes** to your Swift files in the `StandbyCal/Sources/` directory
|
||||
2. **Build and test** your changes in Xcode or via command line
|
||||
3. **Commit your changes** (don't commit generated Xcode files)
|
||||
|
||||
### When Modifying Project Structure
|
||||
1. **Edit `Project.swift`** to add/remove targets, dependencies, or settings
|
||||
2. **Regenerate project**:
|
||||
```bash
|
||||
tuist generate
|
||||
# or
|
||||
tuist build --generate # generate xcodeproj and immediately build it
|
||||
```
|
||||
3. **Verify changes** in Xcode and test that everything builds correctly
|
||||
|
||||
### Best Practices
|
||||
- Always regenerate after modifying `Project.swift` or `Tuist.swift`
|
||||
- Don't commit generated files (`.xcodeproj`, `.xcworkspace`) - they're in `.gitignore`
|
||||
- Use `tuist clean` before regenerating if you encounter issues
|
||||
- Keep your `Project.swift` organized and well-commented
|
||||
- Use consistent naming conventions for targets and bundle IDs
|
||||
|
||||
## Useful Commands
|
||||
|
||||
```bash
|
||||
# Clean generated files
|
||||
tuist clean
|
||||
|
||||
# Visualize project dependencies
|
||||
tuist graph
|
||||
|
||||
# Update Tuist to latest version
|
||||
mise install tuist@latest
|
||||
|
||||
# Check mise status
|
||||
mise current
|
||||
```
|
||||
Reference in New Issue
Block a user