Code Monkey home page Code Monkey logo

bazqux-urweb's Introduction

bazqux-urweb

Major part of the BazQux Reader sources. Excludes configuration files (nginx, ElasticSearch, utilities), static assets (images and commercial fonts) and few source code files (Config.hs with API keys and few experimental files). It won't compile but it could give you an impression of what is going on.

BazQux Reader is written in Ur/Web (client side and a part of web server) and Haskell (major part of web server and feeds fetcher). JavaScript FFI is used for features missing in Ur/Web (or optimizations), Stylus for CSS preprocessing and Webpack to build final JS/CSS assets.

Ur/Web part of sources is located in the root and lib folder. Haskell part is in crawler folder (historic name, frontend is using Haskell as well).

Code is quite ugly (quick and dirty hacks, experiments, legacy, Russian comments or no comments at all). But it's a working code used everyday by thousands of people. Some parts are left untouched from the crazy 2013 spring when Google decided to close Google Reader and I needed to do many-many things in 3 months. Some parts are newer and are more readable.

Posts about my experience (a bit dated):

Ur/Web <=> Haskell interface

If you like to make mixed Ur/Web+Haskell app look into lib, copy_cc, crawler/Gen.hs and crawler/bazqux.cabal (Executable Reader part).

lib contains Ur/Web implementation of Haskell Binary package (Haskell function arguments and results are serialized using Binary). copy_cc is a substitute for the real GNU gcc which is called from urweb compiler and copies webapp.c file so it will be compiled and linked later in GHC. crawler/Gen.hs contains description of data types from which both Ur/Web and Haskell data types and serialization functions are generated. It also generates helper Riak funtions for data types stored in Riak and FFI bindings for Haskell functions called from Ur/Web part. It's not a ready to use library but rather the script you must edit.

bazqux-urweb's People

Contributors

vshabanov avatar

Stargazers

Victor Maslov avatar marstormad avatar Adrian Sieber avatar cakefile avatar Joe Ross avatar Vitor avatar Sajith Sasidharan avatar pihao avatar litsa avatar Sébastien Martini avatar John Soo avatar Evan Relf avatar Alexander Chichigin avatar Jake Chvatal avatar  avatar Brendan Houng avatar Jay Kruer avatar Marat Khafizov avatar Denis Redozubov avatar Ben Doan avatar Jin avatar Phillip Ressler avatar  avatar Alex Chistyakov avatar Athene Noctua avatar Kyra avatar  avatar Seoh Char avatar  avatar Andrey Kovbovich avatar Harrison Klaperman avatar Jack Valinsky avatar  avatar ulongx avatar josejuan avatar Leon Di Stefano avatar Revoori Sai Revanth avatar Ömer Sinan Ağacan avatar Eric Bailey avatar Anton Strilchuk avatar Berkus Decker avatar Franz Maikäfer avatar Jon Schoning avatar Edward Liaw avatar hamlet avatar Anupam <|> अनुपम avatar Paul Koerbitz avatar Damon Zhao avatar William Casarin avatar nlac avatar Emmanuel Oga avatar cgag avatar Jonny Buchanan avatar MB avatar Christian Takle avatar Matt Sylvia avatar Hans Roman avatar Vladimir Zakharov avatar Alexey Kolosov avatar Marcelo Serpa avatar peterwang avatar Roman N. avatar Kostia R avatar Aleksander Alekseev avatar Alexander Malitsky avatar William Ting avatar Leo Lou avatar kreig133 avatar  LB avatar Abby Henríquez Tejera avatar Manuel Gómez avatar  avatar Mikhail Glushenkov avatar Aistis Raulinaitis avatar Alex avatar Michael Alan Dorman avatar Mauricio Scheffer avatar Daniel Yokomizo avatar  avatar Egor Kuropatkin avatar  avatar Jeremy Yallop avatar

Watchers

James Cloos avatar Phillip Ressler avatar  avatar Victor Maslov avatar

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.