About the project
Simple Alarm Clock is an open source Android alarm clock app that brings pure alarm experience by combining powerful features with a clean interface.- Repository: github.com/yuriykulikov/AlarmClock
- License: Apache 2.0
- Language: Kotlin
- Platforms: Google Play, F-Droid
The application code is branched from AOSP (Android Open Source Project) and maintains compatibility with both proprietary and open source Android distributions.
Ways to contribute
There are many ways to contribute to Simple Alarm Clock:Request features
Have an idea for a new feature? Additional feature requests are appreciated! Use the feature request template.
Before you start
Before contributing code, please:- Check existing issues: Search for existing issues or feature requests to avoid duplicates
- Set up your environment: Follow the development setup guide
- Understand the codebase: Familiarize yourself with the project structure and architecture
- Read the code of conduct: Be respectful and professional in all interactions
Making code contributions
Fork and clone
Create a branch
Create a new branch for your changes:Make your changes
When making changes:Follow coding standards
The project uses:
- Kotlin code style: Official Kotlin style
- Formatter: ktfmt for Kotlin, Google Java Format for Java
- Line endings: Unix (LF)
Write tests
Add or update tests for your changes. See the testing guide for details.
Coding standards
Kotlin style
The project follows the official Kotlin coding conventions:gradle.properties
Code formatting
All code must be formatted with Spotless:- Kotlin: ktfmt formatter with Unix line endings
- Java: Google Java Format with Unix line endings
- Targets:
build.gradle.kts,**/*.kt,**/*.java - Excludes: Build directories and test resources
Compiler options
The project uses specific Kotlin compiler options:Commit your changes
Write clear, descriptive commit messages:- Use the imperative mood (“Add feature” not “Added feature”)
- Keep the first line under 72 characters
- Provide context in the commit body if needed
- Reference issue numbers when applicable (e.g., “Fixes #123”)
Push and create a pull request
Fill in the PR template
Provide a clear description of your changes:
- What problem does this solve?
- How did you test it?
- Any breaking changes?
- Screenshots (for UI changes)
Pull request guidelines
PR requirements
Your pull request should:- Pass all existing tests
- Include new tests for new functionality
- Pass
spotlessCheck(code formatting) - Build successfully (
./gradlew assembleDevelopDebug) - Have a clear, descriptive title
- Include a detailed description of changes
- Reference related issues
- Be based on the latest
developbranch
PR process
- Automated checks: CI will automatically run tests and checks
- Code review: Maintainers will review your code
- Feedback: Address any feedback or requested changes
- Approval: Once approved, your PR will be merged
Be patient! Maintainers review PRs as time allows. It may take a few days to get feedback.
CI/CD pipeline
The project uses GitHub Actions for continuous integration. On every push and pull request, the following checks run:Code review process
During code review, maintainers will check:- Code quality: Is the code clean, readable, and maintainable?
- Tests: Are there adequate tests? Do they pass?
- Documentation: Are changes documented?
- Performance: Does it impact app performance?
- Compatibility: Does it work across supported Android versions?
- Breaking changes: Are there any breaking changes?
Development workflow best practices
Reporting bugs
When reporting bugs, please include:- Android version: What version of Android are you using?
- Device: What device are you using?
- App version: What version of Simple Alarm Clock?
- Steps to reproduce: Clear steps to reproduce the issue
- Expected behavior: What should happen?
- Actual behavior: What actually happens?
- Logs: If possible, include relevant logcat output
- Screenshots: If applicable, add screenshots
Requesting features
When requesting features:- Check existing requests: Search for similar feature requests first
- Describe the use case: Why is this feature needed?
- Provide examples: How would it work? Include mockups if possible
- Consider alternatives: Are there other ways to achieve the same goal?
License
By contributing to Simple Alarm Clock, you agree that your contributions will be licensed under the Apache License 2.0.The Apache 2.0 license is a permissive open source license that allows for both commercial and non-commercial use.
Getting help
If you need help:- Documentation: Check the setup guide, building guide, and testing guide
- Issues: Search existing GitHub issues for similar problems
- Discussions: Use GitHub Discussions for questions
- Email: Contact the developers via email for complex questions
Community
Simple Alarm Clock is maintained by Yuriy Kulikov and the community.- GitHub: github.com/yuriykulikov/AlarmClock
- Google Play: Simple Alarm Clock
- F-Droid: Simple Alarm Clock