Skip to content
@CDLUC3

UC Curation Center (California Digital Library)

UC3 provides digital curation, preservation and research data management at the California Digital Library.

Welcome to UC3's Product Development Space 👋

🙋‍♀️ The University of California Curation Center (UC3) helps researchers and the UC libraries manage, preserve, and provide access to their important digital assets.

UC3 Development Practices

This page outlines shared development practices across UC3 repositories. These guidelines establish a consistent baseline for how we build, review, deploy, and operate our services.

For broader context, see our UC3 Product Development Approach.


Development Workflow

Work Tracking

  • All work must be tracked in GitHub issues
  • Issues should include:
    • Clear description
    • Acceptance criteria
    • Relevant context and dependencies
  • Work is prioritized through the Product Manager

Branching & Pull Requests

  • All changes must be submitted via pull request
  • PRs require at least one review before merging
  • PRs should include:
    • Summary of changes
    • Testing instructions
    • Related issue(s)

Code Review

  • Reviews should validate:
    • Functionality
    • Code quality
    • Security considerations
  • Feedback should be clear, constructive, and actionable

Testing & Quality

  • Automated tests are expected where feasible
  • Changes should be validated before merging
  • Accessibility and performance should be considered as part of development

Security Practices


Deployment & Releases

General Guidelines

  • Keep releases small and incremental
  • Avoid deployments late in the day, on Fridays, or before holidays
  • Monitor systems after deployment
  • Communicate releases to relevant stakeholders

Release Template

Use the standard release template: https://github.com/CDLUC3/.github/blob/main/ISSUE_TEMPLATE/release.md


Infrastructure & DevOps

  • Infrastructure should be managed as code wherever possible
  • Services should include:
    • Logging
    • Monitoring
    • Alerting
  • Use shared AWS patterns and tooling when available

ECS Migration Guidance

When migrating EC2-based services to ECS:

Architecture

  • Containerize applications and reduce host dependencies
  • Design for stateless services where possible

Configuration & Secrets

  • Externalize configuration using environment variables
  • Store secrets in AWS SSM or Secrets Manager

Storage

  • Use managed services for persistence (S3, RDS, EFS)
  • Avoid reliance on local disk

CI/CD

  • Build and deploy container images through pipelines
  • Use versioned image tags

Monitoring & Logging

  • Ensure centralized logging (CloudWatch, OpenSearch)
  • Monitor service and container health

Deployment & Rollback

  • Use rolling or blue/green deployments where possible
  • Ensure rollback via previous task definitions

Cost Awareness

  • Monitor utilization and right-size services
  • Evaluate ECS vs EC2 tradeoffs

Shared Responsibility

  • At least two developers should be familiar with each service
  • Document architecture and operational processes
  • Raise blockers and risks early
  • Share knowledge across teams

Related Resources

Pinned Loading

  1. mrt-doc mrt-doc Public

    Documentation and Information regarding the Merritt repository

    JavaScript 8 4

  2. dmptool dmptool Public

    Forked from DMPRoadmap/roadmap

    DMPTool version of the DMPRoadmap codebase

    Ruby 68 16

  3. merritt-docker merritt-docker Public

    Docker compose configuration to test Merritt microservices in an isolated container network

    Shell 14 1

  4. ezid ezid Public

    CDLUC3 ezid

    Python 12 4

Repositories

Showing 10 of 155 repositories
  • uc3-aws-cli Public

    aws cli tools for uc3 servers

    CDLUC3/uc3-aws-cli's past year of commit activity
    Shell 0 1 1 0 Updated Sep 12, 2026
  • dmptool-ui Public

    Repo to test out new NextJS framework

    CDLUC3/dmptool-ui's past year of commit activity
    TypeScript 0 MIT 0 182 10 Updated Sep 11, 2026
  • dmptool-apollo-server Public

    The GraphQL (Apollo server) backend for the new DMSP system

    CDLUC3/dmptool-apollo-server's past year of commit activity
    TypeScript 0 MIT 1 88 12 Updated Sep 11, 2026
  • n2t-web Public

    N2T Web content

    CDLUC3/n2t-web's past year of commit activity
    HTML 0 MIT 0 0 0 Updated Sep 11, 2026
  • dmptool-narrative-generator Public

    Service that takes in a DMP as JSON and renders the narrative in the requested format

    CDLUC3/dmptool-narrative-generator's past year of commit activity
    TypeScript 0 MIT 0 4 13 Updated Sep 10, 2026
  • dmptool-types Public

    Types and interfaces to aide in integrations with the DMP Tool

    CDLUC3/dmptool-types's past year of commit activity
    TypeScript 0 MIT 0 2 9 Updated Sep 10, 2026
  • N2T Public

    next-gen N2T resolver

    CDLUC3/N2T's past year of commit activity
    HTML 5 MIT 5 14 1 Updated Sep 10, 2026
  • mrt-repo-tagger Public

    Tool to tag Merritt repos for each Sprint

    CDLUC3/mrt-repo-tagger's past year of commit activity
    Python 0 0 0 0 Updated Sep 9, 2026
  • merritt-docker Public

    Docker compose configuration to test Merritt microservices in an isolated container network

    CDLUC3/merritt-docker's past year of commit activity
    Shell 14 1 0 0 Updated Sep 9, 2026
  • mrt-service-release-manifest Public

    Data structure defining the semantic version state of all Merritt Tomcat applications

    CDLUC3/mrt-service-release-manifest's past year of commit activity
    0 0 0 0 Updated Sep 9, 2026