Giter Club home page Giter Club logo

telescope's Introduction

Telescope

js-airbnb/prettier-style renovatebot - enabled Node.js CI

Prod API Status Dev API Status

What is Telescope?

Seneca College is active in the open source community. For more than a decade, faculty and students have been blogging about their open source research and development using a variety of platforms (WordPress, Medium, Blogger, and many others). In order to keep track of all these posts across so many different platforms, we created Telescope.

Telescope is an open source web server and client application for aggregating and presenting a timeline of Seneca's open source blogs. Telescope makes it easy to see what's happening with open source at Seneca right now.

You can read a more detailed discussion of the project's original goals in the Overview document, and learn about its Architecture.

Why the name 'Telescope'?

The Telescope project is an example of "planet": a tool for aggregating blog feeds. Since we've used our old Planet to keep track of what people are doing in open source at Seneca, we decided to call our software "Telescope," because it lets us look out and see what's happening in orbit around Seneca.

Who built it?

Telescope was created in the fall of 2019 by 60 students in Seneca's open source courses OSD600 and DPS909, and has been updated and maintained by 100 other students since then.

How can I get involved?

We're still actively developing and maintaining Telescope, and if you'd like to help, we'd be glad to have you join us.

For contribution information, please see our contributors documentation.

For community discussions, join our #telescope Slack channel.

The wiki has more up-to-date information about the project and who is working on it.

telescope's People

Contributors

agarcia-caicedo avatar amasianalbandian avatar birtony avatar c3ho avatar chrispinkney avatar cindyledev avatar dependabot[bot] avatar dukemanh avatar grommers00 avatar humphd avatar hyperthd avatar izhuravlev avatar jerryhue avatar kevan-y avatar lozinska avatar manan311 avatar manekenpix avatar menghif avatar miggs125 avatar musabajwa avatar pedrofonsecadev avatar raygervais avatar rc-lee avatar renovate-bot avatar renovate[bot] avatar silvyre avatar smilegodly avatar tonyvugithub avatar tueenguyen avatar yuanleemidori 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

Watchers

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

telescope's Issues

Implement pagination for front-end

The current planet CDOT is long and arduous to read every post. I'm thinking of implementing a pagination in JS to use for the web-page. Feel free to add more suggestions with regards to this.

[Discussion] Agile Project Management Practice (Suggestion)

While we are working in such a mid-size project with a large number of contributors, one thing that could be helpful and could let us act more efficiently would be project management consideration. Moreover, it is an opportunity for us as a student to get used to the best practices.
We can use the Github project management feature or any other similar technologies for the following concerns :

Project scope and project implementation plan:
Right now we don't have a clear scope for the project, but as we go we will elaborate one. More importantly, in the first few days, we might better make some common pictures/points of view about our project. Currently, we have started some discussions that their topics could be seen as our project work packages. As we discuss, the outcomes of our discussions can be summarized as deliverable tasks in a TODO like list.

Project realization:
Once the above list is partially made, we can:

  • Assign tasks to ourselves, or maybe each other (with some considerations)
  • See which tasks are available or are taken more clearly
  • Feedback on our progress more effectively all in one place
  • Have a final destination to summarize our discussion, issues, pull requests
  • Each task can be seen and approved by the project sponsor (Dave) more efficiently
  • Tasks can be broken down into smaller tasks (if needed) more clearly
  • Tasks can easily be prioritized
  • The changes in the project scope (adding/removing new tasks) could be observed (after related discussion) in one place

To have a tangible view/ an example:
Our discussions could be summarized in some project board, for example as such:

To Do:

  • implementing text analysis function1 ( issue #7)
  • implementing text analysis function2 ( issue #7)
  • implementing text analysis functionN ( issue #7)
  • making decision about basic unit test (...)
  • test for function1,2 ... N
  • Linter automation
  • issue tags classification
  • Kubernetes research
    ...

Discussion: Kubernetes

"Running on Seneca's Kubernetes container cloud" is listed by our overview document as one of the features required of Telescope to constitute a minimum viable product (MVP).

This issue exists to:

  • aggregate research and useful information for those interested in contributing to this MVP feature.
  • discuss the directions we may take in implementing this feature.

Importantly, research contributed to this thread will be referenced when we write documentation, which will be used by future contributors to our project. Therefore, by contributing to our research, you are also helping lay the groundwork for our project's documentation!

Questions that have yet to be answered include:

  1. As far as our project is concerned: what is Kubernetes, and what role will it play here?
  2. How may we gain access to Seneca's Kubernetes container cloud? Who do we need to talk to?
  3. Will the use of Kubernetes potentially affect other MVP features?
  4. Are there any security concerns that may come up when dealing with this feature?
  5. Are there any standards or best practices that we should adhere to?
  6. Should we create a 'Kubernetes' channel on the seneca-open-source Slack (e.g. to help facilitate open conversations), or should we keep all discussion on Kubernetes centralized within this GitHub issue?

Currently, we have these tasks to do:

  • Update documentation -------> (we have self documented files, but should make issue to have them on Documents)
  • Add docker files to project
  • Adding Helm charts -------> (changd to raw YAML files)
  • Deploy on Kubernetes
  • Adding Health checks

Create a .gitignore file

We should create a .gitignore file in order to eliminate any unwanted files to appear in the repository.

Implement sentiment analysis of blog posts

Sentiment analysis can be helpful in determining how negative or positive a blog post is. It will be also helpful to flag blogs which use contain negative wording.

I would like to work on this feature.

Create HTTP server

We need to create a web server for telescope. We should add what has been mentioned in #62 to this.

Automatically fetch and parse complete feed list from wiki

At the moment we're using a hack to read feed URLs from a text file. This is fine for our initial efforts, but we should really be pulling those feed URLs from https://wiki.cdot.senecacollege.ca/wiki/Planet_CDOT_Feed_List.

Looking at the markup in that page, we need to grab the contents of the single pre element on the page:

<pre>
################# Failing Feeds Commented Out [Start] #################

#Feed excluded due to getaddrinfo ENOTFOUND s-aleinikov.blog.ca s-aleinikov.blog.ca:80
#[http://s-aleinikov.blog.ca/feed/atom/posts/]
#name=Sergey Aleinikov
...
</pre>

We then need to lightly process this:

  • ignore lines beginning with # (comments)
  • read URLs out of the [url] format (surrounded in square brackets)
  • read the person's name from name=User Name

Later we might decide to store this in a db or something, but let's begin by pulling this down from the cdot wiki.

Add UI dashboard support for Bull queues

We're using Bull to manage our work queues, so let's also add a UI so we can see what's happening. https://github.com/vcapretz/bull-board will give us the ability to add a route to a web server to show what's happening in our queues:

Eventually this should be behind an admin login, but for now, we can expose it. It will probably make debugging easier too.

Add OPML endpoint export for feed list

In #59 we're adding the ability to ingest our current feed list from the wiki. In #63 we're adding a web server. It might be nice to connect both of these and offer a way to get the feed list out of our app as an OPML file. OPML seems to be the standard way of sharing a feed list these days.

What I envision is adding a route that allows for obtaining an XML file in OMPL format with all our student feeds included. We might be able to use something like https://www.npmjs.com/package/@kohlmannj/opml-generator to do it.

Discussion: CI/CD

The MVP needs to have a CI/CD pipeline set up with automatic tests and deployments.
We need to decide between the following options:

  • Github Actions
  • Travis CI
  • Circle CI

I suggest going for github actions because other options would require setting up external accounts while for github actions, its all here on github only.
On the other side, github actions is still in beta but fairly stable stage.

Add a CONTRIBUTING.md file for environment setup and tracking

Most projects that I found throughout Hacktoberfest had some sort of documentation that helped developers to set up their environment faster. As we add code to the project, we should have a centralized place to contain everything we need to get working on the project. It could also be used to track the progress of the project (what people are working on and where to look), according to the MVP Features.

As pull requests are merged, someone should be tracking and updating the CONTRIBUTING.md as needed. It could be a specific person, or a requirement that each pull request must update the CONTRIBUTING.md file if needed. This could also be tracked or linked to in the README or the overview.md doc as well.

A good start would be adding the Redis requirements and setup from #24 .

Discussion: BACKEND technologies

Part of the MVP features is to determine what technologies to use. This is a discussion on what technologies to use for the backend. We should be able to create a poll so everyone can voice their opinion.

Discussion: where to host?

Where are we hosting this application?

  • seneca zenit/matrix server?
  • heroku?
  • others

Also, are we hosting it behind a web server?

  • nginx
  • apache tomcat
  • others
    this is for useful functionalities such as ip-whitelisting, firewall, load-balancing, https, etc.

Discussion: Git workflow

We need to talk how we’re going to manage our git workflow. What branches will our repo have?
I propose feature branches, that lead to develop which finally builds to master.

Add testing infrastructure

We're starting to get some code in the repo, and it's time to think about how we'll test all the features we add.

I'd like to see us get an initial test in place, so we can figure out our infrastructure, and let others add more tests in future PRs.

Let's use Mocha or Jest to automate our tests. At first, we need a simple npm test run that runs one test against something like the feed parser function, or something else really basic: call into a function and it expects to get back a given result.

Start using .env to configure our system

In keeping with the 12 Factor App approach, we need to move toward using environment variables so we can have a proper config.

Let's use dotenv for this. Here's a good discussion on how to set this up: https://www.twilio.com/blog/2017/08/working-with-environment-variables-in-node-js.html

Once we have the env system in place, we can start enabling/disabling parts of the system or features based on flags in our environment. It will also make it easier to configure things like Redis in dev, CI, or deployment environments.

The first part of this should be to get an initial config file in place that we can add to over time.

Develop a worker to parse contents from the blog's url

We should create a worker that would implement the following features:

  • Get contents from particular blog post url
  • Parse the contents into the JSON format
  • Pass the generated JSON file over

Receives: url
Returns: JSON file

Add a CODE-OF-CONDUCT.MD for the project

I've noticed that in many other GitHub projects, a code of conduct is created to provide standards as to how contributors should behave and how they can participate in the project.

In this file, we can pretty much define what we consider is acceptable behavior and unacceptable behavior. We can also provide information as to how someone can report something that violates the code of conduct. This idea doesn't really have to be enforced but I believe it would be a good idea to have something like this in the future.

We could also just make use of the Seneca code of conduct and just add a link to it somewhere in the overview documentation instead of creating an entire new file

Add logging support to our backend

Let's do proper logging for everything in the back-end using Pino. Ideally, I'd like to see us logging things for regular operations, errors, but also offer debug logs to help developers see what's going on.

We can roll this out in stages, but it would be good to add initial logging support with at least INFO or ERROR levels.

Running both ESLint and Jest together

Currently ESLint and Jest is run by using different commands:
npm run eslint
npm run eslint-fix
npm run jest

Would be nice that have something like a prescript as @UltimaBGD suggested to run these commands.

More information/options:


@humphd :
the && operator won't work on all shells (e.g., many Windows shells). There are few work arounds for this:

  1. we can use pre and post scripts to run things before/after other steps, https://docs.npmjs.com/misc/scripts
  2. we could use https://www.npmjs.com/package/npm-run-all to allow for a set of steps

In general, we have to be careful that our scripts work on Windows, since so many common tricks like this will fail :(


Optimize HTML

Using suggestions and mock ups in issue #12 I'll be making a static HTML page to start, once that's done we can continue adding more features or even containerizing it using Angular/React

Simple Text Analysis

As stated in the overview document, we would like to implement some form of text analysis.

Simple text analysis: Word Length, Reading Time, Writing level, etc

Would be the focus for this issue. This can most likely be developed as a stand alone feature before being integrated into the project. In essence, it can be developed to work on some text, and when the project is advanced enough to support the integration of this feature, easily integrated.

This train of thought could also work for checking the zero content posts, but that may be better to leave for another issue.

I would like to work on this, are there any ideas or ways to improve it that anyone has in mind?

Discussion: FRONT-END technologies

Part of the MVP features is to determine what technologies to use. This is a discussion on what technologies to use for the front-end. We should be able to create a poll so everyone can voice their opinion.

Implement ability to email admins/users

This issue is a part of the MVP Features.

It should send an email to an admin or the user if:

  • A post is deemed inappropriate
  • Any major errors are logged (ex. issues downloading feeds)
  • If it crashed

If there any other times an email should be sent out please suggest them as well.

Mockups for user interface

We have discussed in issue #3 about our frontend technology. But how our final frontend looks like? This is important that we think about it for the number of reasons:

  • Knowing how our UI looks like helps us to identify our app's features and our project's scope.
  • Having a UI design gives us an idea about who can work on what in terms of our front-end development (We can modularize our front-end development)
  • The design itself could be somebody's task if they are interested in and if it is acceptable for the purpose of this project.

Copying basic template/css files over as a starting point

I would like to get this project started by doing the following:

  • copy the existing template/css files (just the simple one from the basic folder) from zenit and paste it into this repo
  • activate github pages for this repo
  • check it out at the github page

If people are okay with this, I can get it going by tomorrow (provided that I have sufficient privilege to activate github pages)

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.