This guide provides step-by-step instructions for setting up the DevFest Nantes development environment on your local machine.
- Prerequisites
- Environment Setup
- Project Setup
- Platform-Specific Setup
- IDE Configuration
- Verification
- Common Issues
- Operating System: Windows 10+, macOS 10.14+, or Linux (Ubuntu 18.04+)
- RAM: 8 GB minimum, 16 GB recommended
- Storage: 4 GB available space minimum
- Java: JDK 17
- Operating System: macOS 14.0 (Sonoma) or later
- Xcode: 16.0 or later
- iOS Deployment Target: 15.0+ (for broad device compatibility)
- RAM: 8 GB minimum, 16 GB recommended
Download and install the latest stable version of Android Studio.
Installation:
- Download Android Studio from the official website
- Follow the installation wizard
- Install Android SDK (API 36 minimum for latest features, API 23+ for device support)
- Install Android SDK Build-Tools
- Configure Android Virtual Device (AVD) for testing
Install Xcode from the Mac App Store or Apple Developer Portal.
Installation:
- Install Xcode from the Mac App Store
- Launch Xcode and accept the license agreements
- Install additional components when prompted
- Install Command Line Tools:
xcode-select --install
Install Git from git-scm.com or use your system's package manager.
git clone https://github.com/GDG-Nantes/DevfestNantesMobile.git
cd DevfestNantesMobileCheck that Gradle can resolve dependencies:
# Check Gradle version
./gradlew --version
# Download dependencies
./gradlew build --refresh-dependenciesEnsure your project structure matches:
DevfestNantesMobile/
├── androidApp/
├── iosApp/
├── shared/
├── shared-ui/
├── gradle/
├── build.gradle.kts
├── settings.gradle.kts
└── gradle.properties
- Launch Android Studio
- Select "Open an Existing Project"
- Navigate to the
DevfestNantesMobiledirectory - Wait for Gradle sync to complete
- Open
Build Variantspanel (View > Tool Windows > Build Variants) - Select
debugbuild variant for development
- Open AVD Manager (Tools > AVD Manager)
- Create a new virtual device:
- Device: Pixel 7 Pro (recommended)
- System Image: Android 14 (API 34) or Android 16 Preview (API 36)
- Configuration: Default settings
# Command line build
./gradlew :androidApp:assembleDebug
# Install on connected device
./gradlew :androidApp:installDebug
# Run tests
./gradlew :androidApp:testDebugUnitTestBefore opening the iOS project, generate the necessary Kotlin framework:
# Generate dummy framework (required for initial setup)
./gradlew :shared:generateDummyFramework
# Or build the full framework
./gradlew :shared:syncFramework# Open in Xcode
open iosApp/iosApp.xcodeproj- Select the
iosAppscheme in Xcode - Choose a simulator or connected device
- Verify the minimum deployment target is set to iOS 15.0
For consistent testing, use the iPhone 16 Pro simulator with iOS 18.3.1:
# Create simulator from command line
xcrun simctl create "iPhone 16 Pro Test" com.apple.CoreSimulator.SimDeviceType.iPhone-16-Pro com.apple.CoreSimulator.SimRuntime.iOS-18-3From Xcode:
- Select Product > Build
- Select Product > Run
From command line:
# Build for simulator
xcodebuild -project iosApp/iosApp.xcodeproj -scheme iosApp -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 16 Pro,OS=18.3.1' build
# Run tests
xcodebuild test -project iosApp/iosApp.xcodeproj -scheme iosApp -destination 'platform=iOS Simulator,name=iPhone 16 Pro,OS=18.3.1'
# Build for App Store (with proper dSYM generation)
./scripts/build-ios-release.shGo to Settings > Plugins and install:
- Kotlin Multiplatform Mobile (if not already installed)
- Detekt (for code quality)
- GitToolBox (for Git integration enhancements)
- Go to
Settings > Editor > Code Style > Kotlin - Import the project's code style (if available) or configure:
- Indentation: 4 spaces
- Continuation indent: 8 spaces
- Tab size: 4
Ensure these settings in Settings > Build, Execution, Deployment > Build Tools > Gradle:
- Use Gradle from: 'gradle-wrapper.properties' file
- Gradle JVM: Project SDK (Java 11+)
Set up consistent Swift formatting:
- Xcode > Preferences > Text Editing
- Enable "Automatic indent"
- Configure indentation to use 4 spaces
For optimal development experience:
- Simulator > Device > Manage Devices
- Create devices for different screen sizes:
- iPhone 16 Pro (main testing device)
- iPhone SE (small screen testing)
- iPad Pro (tablet testing)
Run these commands to ensure everything works:
# Check Android setup
./gradlew :androidApp:assembleDebug
# Verify shared module builds
./gradlew :shared:build
# Run shared module tests
./gradlew :shared:testExpected output: Build successful with no errors.
# Verify framework generation
./gradlew :shared:syncFramework
# Build iOS project
xcodebuild -project iosApp/iosApp.xcodeproj -scheme iosApp -configuration Debug buildExpected output: Build successful with no errors.
- App launches successfully
- Agenda screen loads data
- Speaker list displays
- Navigation between screens works
- Pull-to-refresh functionality
- App launches successfully
- Agenda screen loads data
- Speaker list displays
- Navigation between screens works
- Pull-to-refresh functionality
Solution:
# Clean and rebuild
./gradlew clean build --refresh-dependencies
# Clear Gradle cache
rm -rf ~/.gradle/caches/
./gradlew buildSolution:
- Verify
ANDROID_HOMEenvironment variable - Check Android Studio SDK location in Preferences
- Ensure Android SDK is properly installed
Solution:
Update build.gradle.kts files to use consistent versions defined in gradle/libs.versions.toml.
Solution:
# Generate the framework first
./gradlew :shared:generateDummyFramework
# Then open Xcode project
open iosApp/iosApp.xcodeprojSolution:
- Clean build folder: Product > Clean Build Folder
- Reset package caches: File > Packages > Reset Package Caches
- Update to latest package versions: File > Packages > Update to Latest Package Versions
Solution:
Verify Kotlin and KSP versions are compatible in gradle/libs.versions.toml:
kotlin = "2.2.0"
ksp = "2.2.0-2.0.2" # Should match Kotlin versionSolution:
- Check
gradle/libs.versions.tomlfor syntax errors - Ensure all versions are properly defined
- Run
./gradlew build --refresh-dependencies
Solution: Ensure proper dependency versions:
kmpNativeCoroutines = "1.0.0-ALPHA-45"After successful setup:
- Read the Architecture Guide to understand the codebase structure
- Review Contributing Guidelines for development workflow
- Check API Documentation for GraphQL integration details
- Run the test suites to ensure everything works correctly
- Start with small changes to familiarize yourself with the codebase
If you encounter issues not covered in this guide:
- Check the Troubleshooting Guide
- Search existing GitHub Issues
- Create a new issue with detailed error information
- Ask for help in the project's discussion forum
Estimated Setup Time:
- Android only: 30-45 minutes
- Android + iOS: 60-90 minutes
Happy coding! 🚀
To update your local schema.graphqls file from the Apollo GraphQL server, use the Apollo Gradle
plugin:
./gradlew downloadApolloSchema \
--endpoint="https://confetti-app.dev/graphql" \
--schema="shared/src/commonMain/graphql/schema.graphqls" \
--header="conference:devfestnantes2025"
- The
--endpointflag should match the URL in your Apollo client configuration. - The
--headerflag allows you to specify custom HTTP headers (e.g.,conference:devfestnantes2025) as defined inApollo.kt. - You can add multiple
--headerflags if needed.
This ensures your local schema matches the server and respects authentication/context requirements.