Using Non-Fungible Token (NFT) technology and Decentralized Finance (DeFi), projectNEWM is a music streaming platform and marketplace that cuts out the middlemen and enables Artists to distribute and monetize their works while maintaining ownership rights and interacting directly with fans and investors.
Visit our website
·
Report Bug
·
Request Feature
·
The iOS and Android apps for projectNEWM. Check out our website for more info.
- Kotlin Multiplatform
- Native Android/iOS View and ViewModel layer
We use Spotless to maintain a consistent code style across the project. It integrates two main tools:
- ktfmt (Google Style): A deterministic formatter that ensures all Kotlin code follows a unified structure.
- ktlint: A linter that enforces additional best practices and code smells (e.g., forbidding wildcard imports).
- Check formatting:
./gradlew spotlessCheck - Apply formatting:
./gradlew spotlessApply
To ensure code is formatted before every commit, we use a pre-commit hook. You can install it by running:
./scripts/install-git-hooks.shThis hook will automatically run spotlessApply and stage any formatting changes whenever you commit.
We use Git LFS to manage snapshot images for Paparazzi testing. This ensures that the repository size remains small and binary files are handled efficiently.
To set up Git LFS:
- Install Git LFS:
brew install git-lfs(on macOS) or follow installation instructions. - Initialize Git LFS in the repository:
git lfs install - Pull the LFS assets:
git lfs pull
We use Paparazzi for UI snapshot testing to catch unintended visual changes in our Compose UI components. Snapshot tests render UI components and compare them against baseline images.
Recording Snapshots (Creating Baselines):
./gradlew recordPaparazziDebugThis command generates baseline snapshot images for all your snapshot tests. Run this when:
- Adding new snapshot tests
- Intentionally updating UI components (after verifying the changes are correct)
Verifying Snapshots (Running Tests):
./gradlew verifyPaparazziDebugThis command runs all snapshot tests and compares the rendered output against the baseline images. If differences are detected, the test will fail and show you the differences.
Note: Snapshot images are stored in Git LFS, so make sure you have Git LFS set up before working with snapshots.
Formatting and snapshot tests are automatically verified on every Pull Request via GitHub Actions.
Clone the repo, open in Android Studio or XCode and get to building! You will need to setup your own firebase instance and apply your google-services.json file to get things working.
You will also need to install SwiftGen.
Reach out to the team with any questions.
NOTE: You may have trouble building the project if you're on a VPN.
Run the Android app on a connected device or emulator:
./gradlew :composeapp:installDebugOpen the project in Xcode and run on a simulator or connected device.
Run the desktop application:
./gradlew :composeapp:runOr create a distributable package:
./gradlew :composeapp:runDistributableRun the web application in development mode:
./gradlew composeapp:wasmJsBrowserDevelopmentRunThe webapp will be available at http://localhost:8080 (default port).
For production build:
./gradlew composeapp:wasmJsBrowserProductionRunComing soon!
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion, please fork the repo and create a pull request. You can also simply open an issue and we will get back to you ASAP.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Want to help out but don't have a specific idea or suggestion? Reach out to Marty (mulrich@newm.io) and we can give you a ticket (or two 😉). We are also open to bringing consistent contributors onto the core team.
Don't forget to give the project a star! ⭐️
Marty Ulrich |
Cristhian Escobar |
Skywalker |
Jermaine Lara |
Walter Lara |
Copyright 2022 ProjectNEWM
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.