{"id":20687182,"url":"https://github.com/atelechev/astrocadre","last_synced_at":"2025-03-10T23:55:59.899Z","repository":{"id":51330346,"uuid":"129595360","full_name":"atelechev/astrocadre","owner":"atelechev","description":"Astronomy sky charts viewer application","archived":false,"fork":false,"pushed_at":"2023-12-07T06:45:25.000Z","size":3874,"stargazers_count":2,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-17T16:37:37.100Z","etag":null,"topics":["angular","astronomy","constellation","rendering","sky","stellar","threejs","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atelechev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-15T09:28:33.000Z","updated_at":"2023-12-07T06:43:10.000Z","dependencies_parsed_at":"2025-01-17T16:35:47.573Z","dependency_job_id":"c308b46a-fe06-4862-8e81-bb4e92af50d9","html_url":"https://github.com/atelechev/astrocadre","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atelechev%2Fastrocadre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atelechev%2Fastrocadre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atelechev%2Fastrocadre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atelechev%2Fastrocadre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atelechev","download_url":"https://codeload.github.com/atelechev/astrocadre/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242945843,"owners_count":20210762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","astronomy","constellation","rendering","sky","stellar","threejs","typescript"],"created_at":"2024-11-16T22:56:20.055Z","updated_at":"2025-03-10T23:55:59.889Z","avatar_url":"https://github.com/atelechev.png","language":"TypeScript","readme":"# AstroCadre\n\n_Astronomy sky charts browsing application_\n\n\n![CI](https://github.com/atelechev/astrocadre/actions/workflows/astrocadre-ci.yml/badge.svg)\n\n[Demo](https://atelechev.github.io/astrocadre)\n\n## Description\n\nThis application allows to view sky maps using a Web browser:\n\n\u003cimg src=\"doc/screenshots/demo_01.png\" alt=\"Full view screenshot\" width=\"600\"\u003e\n\nIt provides various possibilities for showing different layers and changing graphical appearance:\n\n\u003cimg src=\"doc/screenshots/demo_03.png\" alt=\"demo screenshot 3\" width=\"300\"\u003e \u003cimg src=\"doc/screenshots/demo_04.png\" alt=\"demo screenshot 4\" width=\"300\"\u003e\n\nIt is written in Angular/TypeScript and should work in any modern Web browser.\n\n## What is This Thing for?\n\nIt was implemented just for fun, by an amateur astronomer. But it can be used to visualize sky charts for whatever purpose you want, and extended by adding more visualizable objects.\n\nThe application has been designed keeping in mind to make it flexible and provide a possibility for different further usages. For example, we can imagine it to be extended and reused in:\n\n  * applications for educational purposes, in astronomy.\n  * queezes and interactive tests.\n  * helper UI tool for astronomical catalogues or presentations.\n  * any other usage you can imagine it for :)\n\n---\n\n## The User Interface\n\nYou can navigate in the map by dragging it with the mouse or by using UI controls. The layers visibility can be toggled and the field of view in the viewport adjusted for your needs, using the UI control buttons.\n\n### Main Viewport\n\nThe main viewport is interactive:\n  * dragging with the mouse allows to navigate in all directions of the view.\n  * a double click in the view aligns it on the North or South axis to the top, depending on the hemisphere where the view is centered.\n\n### Control Panel / Tools\n\nThe UI controls sidebar is toggled by clicking the tools button at the top left corner of the view:\n\n\u003cimg src=\"doc/screenshots/ui_controls.png\" alt=\"UI controls\" width=\"300\"\u003e\n\nAll elements of the UI controls have tool tips. All their functionalities can be summarized as follows:\n\n* _Theme_ drop-down: selection of graphical theme for the main view.\n\n* _Go To_ selection: type an object code ('lyr'), name ('Sirius') or sky coordinate in decimal degrees ('185 -60') to center the view on your point of interest.\n\n* _Objects_ selection: toggle the display of available layers and their properties.\n  * for the Solar system, the current location of the Sun, the Moon and the planets are shown. The dashed lines trace their apparent trajectories: the full orbital circles for the Sun and for the Moon; 7 next days path for Mercury and Venus; 14 next days path for Mars and 30 next days path for the other outer planets. \n  * the stars can be filtered by magnitude (\u003c 2 to 6). Either proper ('Antares', 'Deneb'...) or standard/Bayer ('α', 'β', 'γ'...) names can be shown.\n  * the names of the Messier objects can be toggled.\n  * for the constellations: the boundaries, the lines and the names can be toggled.\n\n* _View_ properties:\n  * Field of view (FOV) controls: select the angular size of the view and press the \"Change FOV\" button to update it.\n  * Navigation buttons: they allow to change the view by the angular size in the FOV control.\n    * first row: rotate clockwise, go up, rotate counter-clockwise buttons.\n    * second row: go left, down or right buttons.\n  * Viewport size controls: select the width and the height of the viewport.\n\n---\n\n## Development\n\n## Recommended Environment\n\n### Front-End\n\nThe [Visual Studio Code](https://code.visualstudio.com/) IDE is recommended.\n\nThe following VSC extensions are also recommended:\n\n* EditorConfig for VS Code (v.0.12.4+), uses the `./.editorconfig` file.\n* ESLint (v2.1+), with the default configuration.\n\n### Back-End \u0026 Tools\n\nFor the tools/data processing part, any IDE supporting Java+Maven projects may be used. However, [IntelliJ IDEA CE](https://www.jetbrains.com/idea/download) was used for the development.\n\nCurrently, the application does not have a specific back-end part. All the served resources are static and they are generated using the `./tools/data-import` sub-project.\n\n---\n\n## NPM Commands and Tasks\n\n### Pre-Requisites\n\n[NodeJS](https://nodejs.org/en/download/) v5.6.0+ must be installed in order to lauch the application in development mode.\n\n### Commands\n\nThe following commands runnable with `npm {command}` or `npm run {command}` are defined in `package.json`:\n\n* `clean`: removes the contents of the current `dist` directory, supposed to contain the last production build files.\n* `start`: executes a build in _development_ mode and launches the server on `http://localhost:4200`.\n* `build:dev`: executes a build in the _development_ mode, without starting the server.\n* `build:prod`: cleans the current distribution files and executes a build in the _production_ mode. The resulting files are placed in the `./dist` folder.\n* `test`: executes the unit tests.\n* `lint`: executes linting checks.\n\n_Quickstart after cloning the source repository:_\n\n* `npm install` to retrieve all the necessary dependencies.\n* `npm start` command should launch the application at `http://localhost:4200`.\n\nThe commands above should work equally from the VSC integrated terminals or from any terminal/CLI tools.\n\n### Production Build\n\nWhen the command `build:prod` is issued, the build sequence adds a prefix to the URLs handled by the application. This is done by passing ` --base-href /astrocadre --deploy-url /astrocadre/` args to `ng build --prod` command in `package.json`.\n\nAll the paths to the assets are also processed by using `environment.pathInContext` function (from `environments/environment[.prod].ts`), which appends the prefix depending on the build target.\n\n---\n\n## Project Structure\n\nThe project is structured as follows:\n\n```text\n./\n |- /dist              // distribution files for production deployment\n |- /doc               // additional documentation\n |- /src               // the source code and related files\n |   |- /app           // main and test source code files\n |   |- /assets        // static resources served by the back-end of the app\n |   |- /environments  // environment configuration files\n |   |- /raw           // raw source files for assets, excluded from dist\n |   |- main.ts        // main entry point of the application\n |   |- test.ts        // test entry point of the application\n |- /tools\n |   |- /data-import   // static resources generation utility\n |   |   |- README.md  // documentation for the tools\n |- LICENSE            // license file\n |- README.md          // this README file\n |- {other configuration files}\n```\n\n`./tools/data-import` contains a Maven project written in Java, allowing to generate static resource JSON files with stellar and other data used in the application. The generated files are placed into `./src/assets` folder and then included into the distribution. For more information about how to generate the static resources and their format, please check the respective `README.md` file in [`./tools/data-import`](./tools/data-import/README.md).\n\n---\n\n## Configuration\n\nThe graphic properties of the application can be configured by providing a few JSON files placed in `/src/assets/themes`.\n\n### Themes\n\nThe themes allow to switch easily between different sets of graphical representation. For example, the following series of images contain exactly the same view, rendered with various themes.\n\n1. `Sky Chart` theme:\n\n\u003cimg src=\"doc/screenshots/theme_sky-chart.png\" alt=\"Sky chart theme screenshot\" width=\"300\"\u003e\n\n2. `Wikipedia` theme:\n\n\u003cimg src=\"doc/screenshots/theme_wiki.png\" alt=\"Wikipedia theme screenshot\" width=\"300\"\u003e\n\n3. `Night View` theme:\n\n\u003cimg src=\"doc/screenshots/theme_night-view.png\" alt=\"Night view theme screenshot\" width=\"300\"\u003e\n\n4. `Tiny` theme:\n\n\u003cimg src=\"doc/screenshots/theme_tiny.png\" alt=\"Tiny theme screenshot\" width=\"300\"\u003e\n\n\n### Theme Metadata\n\nAll available graphic themes are described in the `src/assets/themes/themes.json` file. To add a new theme definition, the following structure should be appended to the JSON array:\n  \n```\n{\n  \"code\": \"theme-code\",         // mandatory, should be alphanumeric, without spaces.\n  \"label\": \"Theme label\",       // optinal, the label to show in the UI controls.\n  \"description\": \"description\", // optional description shown in the UI controls.\n}\n```\n\nTo remove an existing theme, simply delete the respective JSON object from the array.\n\nThe first item of the array is the theme loaded by default when the application starts.\n\n### Theme Properties Definition\n\nFor each theme declared in the `themes.json` file, a corresponding configuration file must exist in the same folder. The name of the file must be `{code}.json`, where `{code}` is the value used as the `code` property in `themes.json`. For example, for the theme metadata definition above, there must be a file named `theme-code.json`.\n\nThe theme configuration file should respect the following structure (cf `src/app/modules/core/models/theme/theme.ts`):\n\n```\n{\n  \"code\": \"string\",                       // redundant with respective \"code\" value from themes.json\n  \"background\": BackgroundStyle;\n  \"layers\": Array\u003cLayerStyle\u003e;            // an extension of the LayerStyle interface is expected \n                                          // in each layer module in the models/theme folder.\n}\n```\n\nFor more details on the configuration, please check the documentation in the `*-style.ts` files in the `models/theme` folders of each layer module.\n\n---\n\n## Release History\n\nThis project started in April 2018 and an initial prototype was published in June 2018 (version 18.6).\n\nAfter having acquired more experience in the front-end development with Angular and TypeScript, the author\nstarted a huge refactoring \u0026 update of the project in February 2021. It allowed to publish a much cleaner and improved version of the application in April 2021 (version 21.4).\n\nMore details on the evolution of the project are available in the [changelog](./CHANGELOG.md) and in the [follow-up documentation](./doc/follow-up.md).\n\n---\n\n## Workflow\n\nThe most recent validated version of the project is available on the `master` branch.\n\nThe development branches should be prefixed with `dev-`. When a feature is implemented on its `dev` branch, a\npull request should be created in order to review and merge it.\n\n---\n\n## License\n\nThis software is distributed under MIT license conditions.\n\nPlease check more details in `LICENSE` file.\n\n--- \n\n(c) 2018 - 2021 Anton Telechev\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatelechev%2Fastrocadre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatelechev%2Fastrocadre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatelechev%2Fastrocadre/lists"}