Giter Site home page Giter Site logo

astralapp / astral Goto Github PK

View Code? Open in Web Editor NEW
3.2K 28.0 143.0 7.96 MB

Organize Your GitHub Stars With Ease

Home Page: https://astralapp.com

License: BSD 3-Clause "New" or "Revised" License

PHP 63.39% Vue 36.16% Blade 0.45%
github stars organize tags

astral's Introduction

Astral run-tests

An open source application that allows you to organize your GitHub Stars with ease. Use the hosted version free, or self-host your own instance with the instructions below!

Installation

Prerequisites

  • To run this project, you must have PHP 7 Node.js, and Yarn installed.
  • You should setup a host on your web server for your local domain. For this you could also configure Laravel Homestead or Valet.
  • Create a new GitHub OAuth App so you can plug in your API keys.

Step 1

Begin by cloning this repository to your machine, and installing all Composer & NPM dependencies.

git clone [email protected]:astralapp/astral.git
cd astral && composer install && yarn
php artisan astral:install
yarn dev

Step 2

Next, boot up a server to visit the app. If you're using a tool like Laravel Valet, the URL will likely default to http://astral.test. That's pretty much it!

Deploying

Contributing

As the next branch is the future of this project, I kindly ask that you do not submit any pull requests to the master branch with new features, as it may have already been covered in the next branch, or your code may be incompatible. If you have found a bug or security issue that you would like to fix, I will still accept any pull requests for these cases. Thank you for understanding!

astral's People

Contributors

denymz avatar dependabot[bot] avatar selfagency avatar syropian avatar tomershvueli avatar williams94 avatar

Stargazers

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

Watchers

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

astral's Issues

Expose a public API

A public REST API would be awesome, and would be helpful for many things. It would help to create different clients. If you build a chrome extension (extension that I'm waiting for long time ago ๐Ÿ˜„), or even a mobile app (Github has no official mobile app, so astral app would definitly fill a void there).

It would also help for other developers to build awesome stuff, for example, if you add support for gists, it could be used by Gistblog or Vist.

So, think about it, I'm not an expert for Laravel, but I think that there are some tools to make an API from your app. It would be great.

Add bitbucket?

How about to add watched repositories from bitbucket?

github permissions

When I clicked "sign up", I got this:

Astral by @syropian would like permission to access your account

Repositories
Public only
This application will be able to read and write all public repo data.

This includes the following:

Code
Issues
Pull requests
Wikis
Settings
Webhooks and services
Deploy keys

The privacy policy suggests that these permissions are not needed. Are they needed in order to un-star a repo?

I suspect that astral is asking for too many permissions. I was under the impression that astral would use the github API to retrieve stars like this:

https://api.github.com/users/syropian/starred

Does astral need permission to write to user repos? Does it need permission to create issues, pull requests, or wikis? I'm not interested to sign up for a service with those permissions.

Search with a combination of multiple tags or keywords

I love this app a lot, thank you @syropian for creating it!
But I think it will be much, much more useful if one can search with a combination of multiple tags or keywords.
I'd like to help but unfortunately I'm not familiar with either PHP or Vue.js ๐Ÿ˜ฆ
Hopefully this will get implemented.

For those who want to do advanced searching now, I wrote a bookmarklet:

javascript:(function(){var a=prompt().toLowerCase().split(/\s_,\s_/),b=a.filter(function(a){return!a.startsWith("#")}),c=.difference(a,b).map(function(a){return a.substr(1)}),d=$(".repo").map(function(){var a=$(this),b=a.find(".repo-name").text(),c=a.find(".repo-tags li").map(function(){return $(this).text().toLowerCase()}).get(),d=a.find(".repo-description").text(),e=a.find(".link a").attr("href");return{name:b,tags:c,description:d,link:e}}).get();d=b.reduce(function(a,b){return a.filter(function(a){return a.name.toLowerCase().includes(b)||a.description.toLowerCase().includes(b)})},d);var e=[];.each(d,function(a){.each(a.tags,function(b){tag=.findWhere(e,{name:b}),void 0===tag&&(tag={name:b,repos:[]},e.push(tag)),tag.repos.push(a)})});var f=c.reduce(function(a,b){var c=_.findWhere(e,{name:b});return _.intersection(a,c?c.repos:[])},d).map(function(a){return''+a.name+""}).join("
"),g=window.open(null,"Result","width=400,height=400,location=no,menubar=no,status=no,toolbar=no");$(g.document.body).html(f)})();

I used codes from here
#14 (comment)

With this you can do:

1
2

Here's the code if you want to tweak it:
https://gist.github.com/NexZhu/4f369e0c3fe3f4dd0710#file-astral-advanced-search-js

HTH

php CS fixer

We should have some form of local fixer for PSR2 so that style-ci is a backup plan not the main method of validation.

Compiling astral

Hello,

I am trying to build the local version as described in your readme and I am a bit lost as that I have no experience with laravel and php.

I am at the Compile step in your instructions. Could you make it clear what that means for me please?

I have tried running compose composer.json and I receive the following error:
Error: no "compose" mailcap rules found for type "application/json"

Thanks in advance!

John

CSS sucks

From @pcperini on November 24, 2014 15:38

Just a small CSS scrolling issue.
screen shot 2014-11-24 at 10 37 29 am

Copied from original issue: syropian/astral-issues#8

Relative URLs not working

If a repository has an image with relative URL, Astral tries to load if from the astralapp.com domain.

This is one repository that causes problems: https://github.com/cruffenach/CRToast . You can see that in Astral, the screenshots are not showing up.

I am willing to try to open a PR for this if pointed to the right file, as I don't know the project structure, nor Angular or Vue.

Highest Level Caching

The current plan I have for step 1 of caching is to use a Middleware class to cache any get requests which return http status codes in the region of 200-300.

The cache TTL will be configurable via .env, but probably set to around 1 hour or so.

Does anybody have any insight as to why this may not be a good idea? I can't see any bad idea.

Perhaps to begin with, it should not apply to the api routing group, and we can deal with that in a more specialised way, but caching general get requests is a good start.

Add support for Gists

From @irace on November 25, 2014 20:17

Gists can be starred too! It'd be great to have them pulled into Astral as well.

Copied from original issue: syropian/astral-issues#16

Chrome plugin

From @jpardogo on November 25, 2014 12:19

Chrome plugin to tag directly from GitHub when you start a project

Copied from original issue: syropian/astral-issues#14

Keyboard shortcuts

From @irace on November 25, 2014 20:17

It'd be great to be able to navigate the Astral UI and apply tags using keyboard shortcuts. One low-hanging fruit shortcut would be tapping enter to save and dismiss the tag popover.

Copied from original issue: syropian/astral-issues#17

SPA url changes

Since this appears (at first glance) to be a Single Page Application, currently there are different page states (such as whether we are on the 'All Stars' page or 'Untagged Stars' etc, but refreshing the page loses the current state.

Using some form of URL changing would help significantly with this.

Angular can do this, I imagine Vue can too (since i believe vue is being used?)

Limit permissions

From @akerl on November 21, 2014 16:44

There should be an option to not give it full write access to all my public repos. I'm totally OK with losing the ability to unstar from the app; I'm not OK giving a 3rd party tool the ability to do whatever it wants to my repos.

Copied from original issue: syropian/astral-issues#2

Able to duplicate tags

Currently, I have an older "Tool" tag, and the newer, crowdsourced "Tools" tag. I wanted to merge them, so I tried renaming "Tool" to "Tools", figuring that worst-case, it'd pop up an error message and I'd have to do so manually.

Instead, now there's two different "Tool" tags. Ideally (in my mind, at least), it'd detect the overlap and offer to merge the tags.

Looking For Core Team Members with Awesome Laravel/PHP Chops

Hi! I'm Syropian, the creator of Astral.

I'm currently looking for one or more awesome Laravel developers who can contribute a few hours a week improving Astral's backend code. Though I know my way around Laravel for the most part, as a full-time front end developer, my strengths lie in that realm, and there are much more talented Laravel devs that could really make Astral's backend a lot better.

Things that do/will need work on at the moment are:

  • Caching app-wide: App-wide & intelligent caching could really speed up some of the responses from the server, and make the whole app feel snappier. I've made progress on v2 github star caching, but there's lots more to be done
  • Route/Controller Refactoring: A rethinking of the routes and controllers, with the end goal of the backend being a nice, tidy API that will eventually even be able to offer 3rd party access to.
  • Tests!!!: I'm notoriously bad about writing PHP tests. Help me Obi-Wan Kenobi. You're my only hope.

So if you love Astral (or maybe like what it could become with your help), and want to contribute to an awesome open source project, either leave a comment on this issue, or if you'd rather chat privately, shoot an email to [email protected].

As a core member you will receive attribution on Astral's website, and you can brag about it to all your friends too.

Neat

Repositories caching

Please, add caching to not loading all repositories every time you open app.
I think, It would be convenient to reload repositories list on demand.

Suggested tags / auto-tagging untagged items

This is a very rough idea / proposal, but I'm filing this issue to get discussion going. I'd be willing to help with implementation.

Essentially, if your initial import is large (mine is bordering on 1K), tagging can be a laborious and tedious process. It would be cool if there was a way to have Astral help the user with that.

This could take the form of searching repo descriptions and README files for existing tags or running that data through something like OpenCalais, and ultimately presenting the results to the user for approval and applying approved tags to relevant items.

Potentially related: #9 #14

Signin in: Error 500

{
  "data": "<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/><script type=\"text/javascript\">\n//<![CDATA[\ntry{if (!window.CloudFlare) ....",
  "status": 500,
  "config": {
    "method": "GET",
    "transformRequest": [
      null
    ],
    "transformResponse": [
      null
    ],
    "url": "/api/auth/login?code=xxxxxxxxxxxxxxxxxxx",
    "headers": {
      "Accept": "application/json, text/plain, */*",
      "Authorization": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }
  },
  "statusText": "Internal Server Error"
}

Can you help me ^^' ?

Setup Improvements

Setting up and installing locally has proven to be not completely straightforward. I think the base page should return the steps based on what you have left to do.

We'll see what steps are needed, but I think we can improve it quite a lot.

Errors encountered along the way:

  • No .env file (.env.example) - Generic 'Something went wrong' page. (not sure a solution to this is possible?)
  • No key generated - Cipher error (Run: php artisan key:generate)
  • No github client ID set (should not show button until the ID's are present)

Usability issues and suggestions

  1. When adding tags to a star in firefox (Linux) the input box does not get cursor focus unless clicked. I believe this works fine in OSX.
  2. Provide a feature to tell astral to flush the cache away and refresh it, so that if we unstar stars, these are evicted away.
  3. Please add a feature to select multiple repos and apply tag(s) to all selected.

Issue errors in a better way

If something goes wrong with authentication currently, it is not clear. A generic exception message is thrown, and not much can be seen from there. InvalidStateException in AbstractProvider.php line 191

UX ideas to enhance product usability

As a daily user of astral, I find myself having to go to the trouble of taking the time of assigning tags in order to keep my astral library up to date. Here are some thoughts on improving:

  1. The process of adding tags/typing tag names/assign tags to libraries can be painful. Sometimes I have tags stored and I forget about them so I re-add which causes multiple tags of different variations e.g node/node.js/nodejs. I am wondering is there anyway that a feature could be introduced where I can purge tags or delete tags?

  2. Is there a more efficient way that the tagging could be done. i.e could a user, upon tagging, be forced to assign a tag via astral while in the github interface so that Astral could be more of a reference rather than a place to continuously keep up-to date?

  3. Dragging and dropping tags on libraries as you scroll through the tags would also be a very nice feature and move me away from that tiny 'edit tags' button.

These are just some ideas for enhancement and thought it would be cool to discuss.

Dropping Repositories on Tags doesn't work in Firefox

From @thasmo on January 23, 2015 22:32

I can drag and drop repositories on tags and it adds the tag to the repository, but afterwards it shows a blank page in Firefox. When reloading, the repository has been tagged.

Copied from original issue: syropian/astral-issues#27

Unable to rename a tag

When attempting to rename a tag, after clicking "Save" the error appears "The name field is required" despite having an entry in the tag's name field

screenshot

Tag descriptions

It's hard to keep track of the meaning of tags. I have a tag "api" that means "api for a thing that I use regularly or own and may want to use in the future". A good balance between long, annoying to type tag names and short, concise tag names would be short keyword-style tag names with descriptions.

It should just be another database and input field, and the logic to connect the two. I'm happy to do it, but the README is prescriptively conservative with PRs. Let me know whether I can help.

Edit: an [enhancement] tag is probably appropriate

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.