Giter Club home page Giter Club logo

olaki's Introduction

Olaki

Olaki is a tool that aggregates information on alternative operating systems for Android phones from various sources.

This is possible thanks to the fact that Android phones can be uniquely identified by their codenames.

The generated list is hosted here.

Architecture overview

Olaki comprises a Node.js app written in TypeScript that fetches data from codebases or websites of known alternative OSes for Android.

Data collected for each alternative OS is stored in a Map data structure.

  • Map key: unique Android phone codename
  • Map value: generic device info and download links where possible

Those individual OS maps are then merged into an overall one, where map keys are again unique Android phone codenames.

The overall map is output as a JSON file and displayed on a table via GitHub pages.

Rules exist to decide what devices should be added to the overall map based on compatibility level for each OS. See appConfig.json.

The main logic complexity stems from the variety of ways data is collected, from well-structured JSON payload to website scraping.

Contributing

Thank you for your interest in the project! You time and effort are really appreciated.

Code of conduct

This project adheres to a code of conduct so that everyone can contribute in an open, welcoming, diverse, inclusive, and healthy environment.

For more details, please visit this page.

Contributing via pull requests

This codebase is written in Typescript. Feel free to raise a pull request whatever your skill level in that language.

Please also raise an issue to capture context on your pull request. E.g. what bug/improvement/suggestion does your pull request relate to?

Contributing via other means

Please raise an issue to describe your problem statement.

Development cycle

Pre-requisites

Node.js v18.x.x and npm 9.x.x.

Initial setup

Clone this codebase and run the following:

npm install

npm run init-submodules

Regularly update submodules

npm run update-submodules

The submodules directory contains clones of some alternative OS project codebases. These can be updated to their respective HEADs at once by running the command above.

Lint + fix

npm run lint

npm run fix-lint

Linting and formatting rules are defined in .eslintrc.json and .prettierrc.json.

An .editorconfig file is also provided for IDEs compatible with that standard.

Compile TypeScript code to JavaScript

npm run build

Extract device summaries and build public assets

npm run extract-device-summaries

If that command runs successfully, you should be able to open in your browser the file public/index.html

CI / CD

On pull request against the main branch

The following GitHub workflow steps are run:

  • CodeQL analysis
  • Lint
  • Build

On push to the main branch (including PR merge)

Additional GitHub workflow steps that are run:

  • Run the app to extract device summaries
  • Publish the generated list to the page on GitHub Pages

License

MIT

olaki's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar kedio-labs avatar kedio-labs-github-token-generator[bot] avatar olaki-android avatar tepafoo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

olaki's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.