Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

129 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Studio

Studio represents the intersection of the Workshop and the Lab.

The name was chosen deliberately: a studio is where the process of learning meets the result of shipping. This Gradle monorepo serves two primary purposes:

  • The Sandbox (The Lab): A high-velocity environment for breaking things, mastering new tech (Kotlin, Compose, KSP), and technical R&D.
  • The Foundry (The Workshop): A reliable pipeline for crafting and maintaining functional, high-quality apps for myself and my inner circle.

One roof, many experiments, and a few finished pieces.

Project Structure

  • /apps: Contains the main applications. Each app has its own feature and shared modules.
  • /build-logic: Contains convention plugins and build configurations to keep build scripts clean and DRY.
  • /core: Shared core utilities, domain logic, and infrastructural components used across multiple apps.
  • /icons: Vector assets and icons shared across projects.
  • settings.*.gradle.kts: Dedicated settings files for different app targets (e.g., settings.cops.gradle.kts, settings.grimoire.gradle.kts). These files conditionally include modules, ensuring the IDE only indexes what is necessary for the active application.

Common Tasks

Build Apps

The monorepo uses Gradle properties to determine which app modules to include and build. By default, it targets the active apps defined in your properties or entry configurations.

./gradlew build

Run Generators

This monorepo leverages custom generators to scaffold new code.

Generate an App:

./gradlew generateApp -PappName=<name> -Ptemplate=<template>

Generate a Module:

./gradlew generateModule -PmoduleType=<type> -PmoduleName=<name> -PappName=<app>

Screenshot Testing (Android)

Screenshot tests are executed using Roborazzi. Note that enableScreenshots=true might be required depending on your configuration.

Record/Update baselines:

./gradlew recordScreenshots -PenableScreenshots=true

Verify screenshots against baselines:

./gradlew verifyScreenshots -PenableScreenshots=true

About

Culinary Ops (COps)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages