GithubHelp home page GithubHelp logo

nushackers / nushackers-site Goto Github PK

View Code? Open in Web Editor NEW
43.0 17.0 43.0 97.33 MB

NUS Hackers website

Home Page: https://www.nushackers.org

License: MIT License

HTML 53.90% Python 8.41% JavaScript 6.30% SCSS 31.39%
nushackers hacktoberfest

nushackers-site's Introduction

NUS Hackers Website

This is the repository behind NUS Hackers' website https://nushackers.org, built with the Hugo framework.

Getting started πŸš€

To get started, you'll need:

  1. Hugo v0.111.3 (the extended version)
  2. Yarn v1 with a recent version of NodeJS

Then clone this repository and run

yarn install # install dependencies
yarn dev # start development server

Hugo will now generate the site and watch the directory and update the site when any changes are made. You can access the site at http://localhost:1313.

Data Management πŸ“Š

Most of the data used to populate the site are stored in the data/ folder as .yaml files. These includes files that contain information about the coreteam and upcoming projects/events for the semester.

The current academic year and semester are kept tracked of in the config.toml under the [params] section. This is used to automatically determine which project/event data file to use for the current semester. Project/event data files are named in the format <project-name>_<academic-year>_<semester>.yml and are stored in corresponding data/<project-name> folder.

Coreteam Details πŸ™‹β€β™‚οΈπŸ™‹β€β™€οΈ

Coreteam details and introductions are stored in the /data/coreteam_members.yml file. Include your wittiest introductions here and don't be shy to share your contact details and links!

This file is primarily for active coreteam members, we have a separate file for coreteam alumni in /data/alumni.yml.

Projects / Events πŸ“…

Friday Hacks πŸŽ‰

  • Data location: /data/friday_hacks
  • Data Format:
    start_date: <date-time-of-first-friday-hack>
    start_nr: <number-of-first-friday-hack-in-the-list-below>
    hacks:
       # each event/hack consists of a venue, blog post and talk topics
       - venue: <where>
         blog_post: <blog-post-url>
         topics:
           # each topic consists of a speaker name, affiliation and the title of the talk
           - speaker: <name>
             from: <affiliation>
             title: <title>
        # if there is no friday hack, just put nohack: <reason>
        - nohack: <reason>
    • ❗️Each hack has a date tagged to it implicitly based on the order of the list. The first hack in the list will have start_date as the event date, the second hack will be the next Friday (+7d) and so on.
      • This means that there needs to be a entry for every Friday between the start date and the end of the semester!
    • start_date: This is used to automatically generate the date for each event in the list.
    • start_nr: This is used to automatically generate the Friday Hacks number for each event
      • For example, if start_nr is 200, then the first event in the list below is the Friday Hacks #200 and the next event would be Friday Hacks #201 and so on (this is all done automatically)
    • Refer to Creating a Post for more details on how to create a new blog post for Friday Hacks

The data format for Friday Hacks is a little more involved than the others due to legacy reasons

Hackerschool πŸ“š

  • Data location: /data/hacker_school
  • Data Format:
    events:
      # Each event consists of a topics, venue and date
      - topic: <what-is-the-workshop-about>
        venue: <where>
        date: <when>
    • Events are not sorted by date automatically, so do remember to list them in chronological order!

Hackers Toolbox 🧰

Creating a Post πŸ“

All blog posts are stored under the content/posts folder.

To create a new post:

  1. Add a markdown file to the content/posts folder
  2. Name the file in the format YYYY-MM-DD-<post-title>.md
  3. Add the following frontmatter to the top of the file:
    ---
    title: <post-title>
    date: <YYYY-MM-DD>
    url: /<year>/<month>/<day>/<post-tag>
    ---
  4. If the post is sponsored, add the following frontmatter:
    sponsors:
      - <sponsor-name>

Adding a new sponsor 🀝

Sponsors will be added to a post via HTML partials. These sponsor partials are stored under the layouts/partials/sponsors folder. The naming convention for these partials is <sponsor-name>.html.

To add a new sponsor:

  1. Create a new HTML partial under the layouts/partials/sponsors folder
  2. The name of the partial must match the name under the sponsors frontmatter in the post
  3. The logo of the sponsor should be stored under the static/img/sponsors folder

nushackers-site's People

Contributors

advaypal avatar angelsl avatar chaitanyabaranwal avatar changchuming avatar chrisgzf avatar dependabot[bot] avatar donjar avatar francisyzy avatar hcwong avatar indocomsoft avatar jellyjellyrobot avatar jethrokuan avatar jin avatar joey-c avatar kokrui avatar kouyk avatar li-kai avatar mkeoliya avatar parth-io avatar ramuvairavan avatar ravern avatar raynoldng avatar shenyih0ng avatar simonjulianl avatar sushinoya avatar taneliang avatar tohlh avatar varunpatro avatar yyjhao avatar ziqing26 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

Watchers

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

nushackers-site's Issues

Get rid of gulp

Hugo can integrate with PostCSS and plugins. Time to get rid of Gulp.

Refactor "featured articles" section to use the same markdown file

Currently we have to duplicate the markdown file into the featured folder if we want it to appear in the featured section. This is not a big deal, but files can get out of sync. It would be good to figure out a way to avoid this duplication.

An ideal solution would involve specifying the featured content type in the front matter of the relevant post.

See related PR: #576

Div is misaligned on landing page.

The div containing the text "We're building a community of passionate hackers..." gets misaligned if the number of friday hacks in the right column is too few.

Usual Behaviour:
screen shot 2017-08-03 at 12 28 41 pm

Behaviour when only one or two friday hacks are listed:
screen shot 2017-08-03 at 12 28 49 pm

Steps to replicate: Run jekyll locally -> remove all but one friday hacks from _data/friday_hacks.yml -> Go to landing page

Include description of FH on front page, right above list of FH events this semester

I propose putting a simple description of FH to

  • indicate that it's open to everyone
  • tell readers how to contact us if they'd like to speak.

This is primarily to reduce the number of emails we get asking us if talks are open to non-NUS students or if they'd need to register to attend.

Sample Description
Friday Hacks is our weekly gathering where we invite students and speakers from academia and industry to give technical talks. Anyone, even non-NUS students are welcome to attend, just show up on the day itself! If you'd like to speak, find out more on how to contact us and what to include in your message. See you at our next Friday Hacks!

Question regarding download.nus.edu.sg/mirror

Sorry for the off-topic issue, but I tried the mirror contact email address but no one is responding for the last month.

Since around 2023-03-20 the rsync service is down:

$ rsync --timeout=30 rsync://download.nus.edu.sg
[Receiver] io timeout after 30 seconds -- exiting
rsync error: timeout in data send/receive (code 30) at io.c(200)
[Receiver=3.2.7]

Does anyone know what the problem is, and/or if there can be something done about it?

thanks

@tohlh @shenyih0ng (mentioning recent active contributors here)

Clean up and review site content

For each page:

  1. Convert HTML to Markdown where possible
  2. Review the content, correct any typos, out-of-date information and grammatical errors. Review the tone a la #258 if necessary.

Pages:

  • about/_index.md
  • about/what-is-hacking.md
  • alumni/_index.md
  • archive/_index.md
  • code/_index.md
  • code/in-support-of-git.md
  • contact/_index.md
  • discussion/_index.md
  • events/_index.md
  • fh/_index.md
  • fridayhacks/_index.md
  • fridayhacks/speak-at-friday-hacks.md
  • hackerdefined/_index.md
  • hackerdefined/related.md
  • _index.md
  • join-coreteam/_index.md
  • name-change/_index.md
  • name-change/related.md
  • recordings/_index.md
  • sponsor/hello-world.md
  • sponsor/_index.md
  • the-hacker-attitude/_index.md
  • the-hacker-attitude/related.md
  • why/_index.md

Integrate MathJaX or LaTeX

I'd like to publish several digest articles requiring math support. Suggest looking into integrating MathJaX or KaTeX

zig-zag layout on redesigned page is potentially disorienting

As alluded to by @harishv7

Not exactly sure about the horizontal / zig-zag layout. I naturally found myself expecting a vertical layout. For example, in Friday Hacks, the events are in ascending order of date from left to right. Under Articles, the left-most side contains the latest article.

image

Article blurbs are presented in chronological order in a zig-zag fashion.

Proposed solution: We can limit it to just a single row of 3 blurbs so that it reads more naturally.

No link to a complete Friday Hacks and hackerschool schedule

We only show upcoming events on our current website redesign.

(At the moment it is possible to view the complete friday hack schedule by looking through the blog posts and the hackerschool schedule by visiting the hackerschool subdomain but this is a bit of a hassle)

Features: Telegram/Instagram feed and displaying content better

probably to discuss during some coreteam meeting

What is the value of the website?

Guiding ideas on why the website is still relevant/can be more relevant:

  • Improving the flow on the website will drive interest in NUS Hackers
    • Will need more analytics from a longer timeframe on how many people read the secondary webpages
    • Easier to recruit during SLF
  • Retain the relevance of the website as a means to engage with our vision and mission
    • Individual posts do not convey the broader vision we have; people engage with FH/HS/HT individually through our social media channels, but not with NUS Hackers and our broader vision of a hacking community
  • Reduce the burden of maintaining the website
  • Need to make it easier to publicise secondary initiatives like Project Mentor and Project Intern
  • Add a wiki/resources page that a) is on technical topics or b) collates tech insights around NUS/SG/the world or c) how-to guides or d) links to our past presentations

Telegram/Instagram feed

Current workflow: post publicity on separate social media channels; update the website with a post

Issues:

  • Tedious - publicity is complex and slow
  • Establishing a source of truth
  • Poor data management

Idea:

  • Telegram: the RSS feed will get updated automatically, Telegram channels is searchable
  • We can set up a script that automatically creates a post as our Telegram channel gets updated

Archive of past schedules and content display

Currently, we cannot view past HS and HT events. For FH, we have to scroll through the posts.

Issues:

  • Managing links - using linktree to organise the most relevant links now
  • YouTube playlists are standalone
  • Link between individual posts and the past schedule could be better
  • No sense of continuity between past HS and HT sessions, even if they are on the same topic
  • The content on our site grows - the number of posts is increasing, drowns out other posts such as the FH posts and this one for example (https://www.nushackers.org/2020/06/mock-interviews/)

Ideas:

  • Some data management solution to manage yml files and create an internal wiki that's searchable (implementing a database seems too high-effort because it would disrupt the existing workflow)
  • For FH posts, they should not be visible under 'Articles' and should be specifically linked to via an archive of past schedules - but they can be searchable
  • Link management is better: old invalid links get invalided automatically

As a user, I want to see relevant blog posts on the front page

Currently if you go to the front page, you'll see blogposts about Friday hacks overwhelming content.

We want to filter them out. This involves:

  • Inserting a "friday-hacks" category to all posts (This should be easily automated)
  • Writing a function to only pick non-friday hack blog posts to display in the front page.

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.