hackersatcambridge / hac-website Goto Github PK
View Code? Open in Web Editor NEWThe Hackers at Cambridge Website Repo
Home Page: https://hackersatcambridge.com
License: MIT License
The Hackers at Cambridge Website Repo
Home Page: https://hackersatcambridge.com
License: MIT License
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.
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.
#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
swiftlint
and swiftlint autocorrect
at appropriate point in our buildsIs 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 a page which has the exec committee on it
Help people get in touch with us individually
Makes the society less of a 'faceless org'
HaCTML could use inbuilt markdown support for TextNode
This will make it much cleaner to use Markdown in HaCTML:
Currently:
TextNode(Text(markdown: mdText).html, escapeLevel: .unsafeRaw)
Proposal:
TextNode(markdown: mdText)
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.
Ideally, this should have different levels of logging.
Unit tests should also fail if errors or warnings get logged.
DatabaseUtils has a way to extract the components from a database URL. This needs to be tested
Currently the README says to create an empty .env file before running docker-compose up
, we should probably reference the section saying which values should go in there at that point.
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.
This database should be as easy to run as a docker-compose up
As for models, Vapor's Fluent is a good contender
See issue #58 for the backend needed for this.
When someone goes to https://hackersatcambridge.com/hot-hot-hotdogs (or any other invalid route), you get something similar to:
Which is naturally incredibly ugly and unhelpful, with no way of navigating to a valid page.
Ideally we want a nicely themed 404 page. This issue is purely for creating the visuals of such a page, #58 is about the backend system to route to such a page.
This is required for correct scaling on mobile. More info here
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:
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 .
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.
Have a page with a list of all HaC members
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!
Doing this loses the actual swift error in the noise.
To do this, we'll need our swiftBuild task in the gulpfile to emit a stream end, maybe like the styles build does
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.
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
https://www.youtube.com/channel/UCNY6ekV9z84ZYL4qUDusTFw
This link should be on the home page, furthermore, individual workshops should be linkable against these
This leads gulp to fail to serve the pages any longer, meaning it has to be restarted manually.
Add analytics to our front end (such as Google Analytics) to track how many users our website has.
Allows us to measure the success of our website according to different metrics, so we know where to focus our efforts.
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?
Got removed for MVP, but should be re-added in a polished way.
Needs investigating
¯\(ツ)/¯
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.)
Add a page for our constitution
Having our constitution on the webpage would be cool
This will allow our public calendar to be added to other people's, and then get updated automatically.
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!
Adding a way to change our feature on the home page without touching source code.
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.
'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 Workshop
s and Facebook events.
Hackathons, Game Jams, Improvement workshops, etc.
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.
Looks like this might be caused by Livereload running too soon
This requires creating a website on Heroku, and changing our DNS to point to that.
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.
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.