Code Monkey home page Code Monkey logo

hac-website's People

Contributors

charliecrisp avatar doctorn avatar eliotlim avatar jaredkhan avatar martinhartt avatar moosichu avatar mukul-rathi avatar patricoferris avatar pinpickle avatar realtimlaz 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hac-website's Issues

Make Travis treat Docker Warnings as errors

eg:

[WARNING]: Empty continuation line found in:
    RUN   export DEBIAN_FRONTEND=noninteractive &&   apt-get update &&   apt-get install curl apt-transport-https &&   curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - &&   curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - &&   echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list &&   apt-get update &&   apt-get install nodejs yarn &&   npm install -g n &&   n 6.11.3 &&   apt-get install -y libpq-dev
[WARNING]: Empty continuation lines will become errors in a future release.

Should cause a build to fail, not allowing pull requests.

Add error handling for routes (with error pages)

Should handle not found pages and errors thrown in routes.

Need a pretty page to tell our lovely users when something has gone wrong.

This issue is about the backend part of this, see issue #78 for the frontend.

Add SwiftLint to the build

#57 Added a SwiftLint configuration but currently there's no way to run this in the container (or on our CI build). We should make this happen so that the linter gets a chance to have it's say

Auto-generation of .env files for development

Is there a way we can generate the .env file with all the dev info automatically, and update with new info if it needs it?

We could at least give more descriptive errors if the environment variables are missing, maybe if the user is building in development, we could point them to the README?

Add an exec committee page

What the enhancement is

Add a page which has the exec committee on it

Why it could be helpful

Help people get in touch with us individually

Makes the society less of a 'faceless org'

HaCTML Markdown support

If the issue is enhancement suggestion:

What the enhancement is

HaCTML could use inbuilt markdown support for TextNode

Why it could be helpful

This will make it much cleaner to use Markdown in HaCTML:

Currently:
TextNode(Text(markdown: mdText).html, escapeLevel: .unsafeRaw)

Proposal:
TextNode(markdown: mdText)

Make the parsing of workshops more automated

At the moment, if you want to add a new field to the Workshop struct, you have to explicitly add methods to parse that particular field.

I don't know if this is possible, or even desirable in Swift or not, but could we make this more automated (possibly using reflection?) in order to reduce friction and make this more data driven.

In my head the workflow would be a matter of adding a field to the Workshop of a given type, and just having it automatically get picked from the metadata.yml files.

We would also need to add the ability to overwrite this behavior if we want to do some custom parsing - on a field-by-field basis.

Add a nice logging system

Ideally, this should have different levels of logging.

Unit tests should also fail if errors or warnings get logged.

Way to control featured topic on homepage

When an event is currently happening, it should be featured. This should be automatic
We should also be able to control the featured topic text/link for when there is no event currently on. More automatic controls can be added later down the line.

Home page about copy

We have some simple home page about copy in the works but our home page needs to describe who we are and what we do in an obvious way to newcomers:

  • A brief statement of our mission
  • An explanation of the kinds of events we run
  • An explanation of the kinds of projects we create

Properly escape strings that are encoded to JavaScript

Screenshot of bug:

screenshot from 2017-11-06 22-14-32

Explanation of bug:

Currently, when encoding strings to be passed to JavaScript, we don't properly encode them. It is incredibly important that this gets fixed!

Upgrading to Swift 4 might help with this, as they provide encoders and decoders.

The code for this has yet to be merged, and is in the branch in pull requst #113 .

Come up with a component solution for templates

Either we use Stencil's import tag for components, or we roll our own system to get us a little more safety (make our own tag). I think the import tag leaves a lot to be desired, so we may end up having to do a bit of work.

I use the word "component" instead of "partial" intentionally. Partials generally come with a lot of baggage in that they use the global scope, which is going to be a source of bugs. Components will allow us to create independent, reusable parts of our views. With enough work, we may even be able to make them type safe.

Without these, we are likely going to end up with a lot of duplication in our views, which will make refactoring difficult.

Add a members page

What the enhancement is

Have a page with a list of all HaC members

Why it could be helpful

It could be a useful way for the current committee to find out who has been involved with things in the past, can also be used to help organise get togthers!

Define and build normalised stream of "updates"

Our home page features an update stream. It has upcoming events as well as things we've done (videos, blog posts, all the good stuff).

We need a way to combine these two concepts in a way that doesn't result in one being dwarfed by the other (events are in the future, released things are in the past).

Events can be pulled in by #23 but other updates need some kind of representation in our database.

Our Heroku build is slow

Each and every one of our Heroku builds pulls all of our Swift dependencies as a Git repo and builds them. Other buildpacks (such as the Node one, which we are also using) intelligently cache dependencies.

We may find speed gains by using an existing buildpack that has caching, or contributing to the one we are using to add caching.

There's a PR open upstream that may already be fixing this: vapor-community/heroku-buildpack#14

Add analytics

What the enhancement is

Add analytics to our front end (such as Google Analytics) to track how many users our website has.

Why it could be helpful

Allows us to measure the success of our website according to different metrics, so we know where to focus our efforts.

Write a fully fleshed-out about section

We have a bare-bones MVP version, something that is more comprehensive would be brill.

It could do stuff like refer to recent workshops/videos in some of it's examples?

Front-end styling

We need to write some maintainable styles as a basis for the design of the website. This may follow the ideas put forward by the current website at time of writing:

screen shot 2017-04-03 at 20 34 11

Make compile errors less silent

Currently, when a compile error occurs in an edited swift file, you have to investigate the log to see if such a thing actually occurred. It would be nice if the website itself displayed a message showing the compile error. (Or at least saying that an error had occurred.)

`docker-compose up` sometimes shows containers previous output

e.g. You will run docker-compose up and then you see the output from many previous builds. This seems to happen when I have killed the task with ^C and then it said 'ERROR: aborting' and then I try to run docker-compose up again. This output is quite annoying when you have many previous builds in the output that have errors so they ring the console bell many times!

We have to edit source code to change our feature

What the enhancement is

Adding a way to change our feature on the home page without touching source code.

Why it could be helpful

This makes it easier to rapidly change features, which makes it less likely for the data we have to become stale.

In the future we could even generate it from our event stream, so it updates automatically.

A potential problem is the need to add images on the fly as well. We'll need some kind of s3 setup for this. This is worth doing as adding more images (binary files) to our repo is something we'd like to avoid on account of it bloating the repo's size.

Need a database representation of 'Events'

'Events' are things that are advertised with a time and date and any other additional information necessary. We need a representation of events for the website that allows for referencing of Workshops and Facebook events.

Integrate our Medium blog

Hackers at Cambridge has a Medium account, therefore it would be really nice if we could integrate it into our website.

Once we have a generic event stream, it would be really nice if our blog posts could appear in it. This needs some investigation, but ideally we would be able to setup a system where our website can pickup new blog posts and display a small preview of them with a link to the full articles.

The Medium API is probably a good place to start looking.

Swift compiler warnings are allowed by Travis

Our production code should not have warnings in it. It'd be nice if Travis reported warnings during its tests. The complication arises because some of our dependencies have warnings on compilation so we'll need to make sure we don't fail on those

Otherwise, so far I know that calling swift build -Xswiftc -warnings-as-errors will pass the -warnings-as-errors flag to swiftc (the swift compiler) on build.

Don't use npm in order to install yarn

Yarn advise against this, strongly:

Note: Installation via npm is generally not recommended. npm is non-deterministic, packages are not signed, and npm does not perform any integrity checks other than a basic SHA1 hash, which is a security risk when installing system-wide apps.

For these reasons, it is highly recommended that you install Yarn through the installation method best suited to your operating system.

Better alternative

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt-get update && sudo apt-get install yarn

Unfortunately

Yarn's installation instructions did not work, so we are falling back to npm to install it

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.