All Projects → foursquare → Fsqio

foursquare / Fsqio

Licence: apache-2.0
A monorepo that holds all of Foursquare's opensource projects

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Fsqio

Margarita
[not actively maintained] Mobile and Web application implementing Kiwi.com Tequila API
Stars: ✭ 213 (-4.48%)
Mutual labels:  monorepo
Clojurenews
Clojure News Web Application - (Hacker News Clone)
Stars: ✭ 217 (-2.69%)
Mutual labels:  mongodb
Full Reactive Stack
Full Reactive Stack with Spring Boot (WebFlux), MongoDB and Angular
Stars: ✭ 221 (-0.9%)
Mutual labels:  mongodb
Chartbrew
Open-source web platform for creating charts out of different data sources (databases and APIs) 📈📊
Stars: ✭ 199 (-10.76%)
Mutual labels:  mongodb
Jsonbox
HTTP-based JSON storage.
Stars: ✭ 2,440 (+994.17%)
Mutual labels:  mongodb
Golang Monorepo
An example of a golang-based monorepo.
Stars: ✭ 218 (-2.24%)
Mutual labels:  monorepo
Whitebird
Open-Source, collaborative, digital Whiteboard
Stars: ✭ 209 (-6.28%)
Mutual labels:  mongodb
Python Ai Assistant
Python AI assistant 🧠
Stars: ✭ 219 (-1.79%)
Mutual labels:  mongodb
Stator
Stator, your go-to template for the perfect stack. 😍🙏
Stars: ✭ 217 (-2.69%)
Mutual labels:  monorepo
Mongock
Lightweight MongoDB migration tool for Java
Stars: ✭ 220 (-1.35%)
Mutual labels:  mongodb
Fullstackopen
Exercises for the Full Stack Open course.
Stars: ✭ 214 (-4.04%)
Mutual labels:  mongodb
Artipub
Article publishing platform that automatically distributes your articles to various media channels
Stars: ✭ 2,685 (+1104.04%)
Mutual labels:  mongodb
Nodejs Microservice Starter
🌱 NodeJS RESTful API Microservice Starter
Stars: ✭ 220 (-1.35%)
Mutual labels:  mongodb
Helicalinsight
Helical Insight software is world’s first Open Source Business Intelligence framework which helps you to make sense out of your data and make well informed decisions.
Stars: ✭ 214 (-4.04%)
Mutual labels:  mongodb
Mongodb Quickstart Course
Course demos and handout material for Talk Python's MongoDB Quickstart course
Stars: ✭ 220 (-1.35%)
Mutual labels:  mongodb
Zkillboard
Easy does it
Stars: ✭ 212 (-4.93%)
Mutual labels:  mongodb
Bookmarks.dev
Bookmarks and Code Snippets Manager for Developers & Co
Stars: ✭ 218 (-2.24%)
Mutual labels:  mongodb
Nestjs Email Authentication
Nestjs Starter using Mongodb and Passportjs
Stars: ✭ 222 (-0.45%)
Mutual labels:  mongodb
Mongolid Laravel
Easy, powerful and ultrafast MongoDB ODM for Laravel.
Stars: ✭ 222 (-0.45%)
Mutual labels:  mongodb
Cloudtunes
Web-based music player for the cloud ☁️ 🎶 Play music from YouTube, Dropbox, etc.
Stars: ✭ 2,449 (+998.21%)
Mutual labels:  mongodb

Foursquare Fsq.io

All of Foursquare's open source code in a single repo.

Build Status

All Foursquare code lives in a single repository, an architecture generally called a monorepo. Fsq.io is a subset of that internal monorepo. Fsq.io holds many of Foursquare's open source projects that had previously lived in their own separate Github repos. Foursquare contributes to a build tool specifically designed to work with monorepos called Pants. The entire Fsq.io repo is is built and tested by Pants.

Deploying directly from our monorepo has some nice advantages, for consumers of our open source projects as well as Foursquare itself. The entire repo is built daily by our CIs and internal contributions are open sourced automatically without the overhead of publishing. This repo will always contain the latest code that we use internally, all of the tools can be built just as we use them, directly from HEAD.

Projects include:

  • Fhttp: A request building interface similar to scalaj-http for Finagle http clients.
  • Rogue: A Scala DSL for MongoDB
  • Spindle: A Scala code generator for Thrift
  • Twofishes: A coarse, splitting geocoder and reverse geocoder in Scala
  • and others.

Requirements

  • JDK 1.8 (1.8.0_40 preferred)
  • python2.6+ (2.7 preferred)
  • postgresql
  • monogdb server (required to pass some tests)
  • An increased number of file descriptors (we use 32768)

Internally we use OSX Yosemite or later. Other OS may work but are officially unsupported. (Unofficially, if building on Linux you should install python-dev, build-essential, and libpq-dev in addition to the above).

Pants build system

Pants is a build system that works particularly well for a source code workspace containing many distinct but interdependent pieces.

Pants is similar to make, maven, ant, gradle, sbt, etc. but pants pursues different design goals. Pants optimizes for:

  • building multiple, dependent things from source
  • building code in a variety of languages
  • speed of build execution

Pants is a true community project, with major contributions from Twitter, Foursquare, Square, among other companies and independent contributors. It has friendly documentation here, in this README we will just touch on how to compile and test the code.

Compiling and Testing

First Run

A good first run is to compile the repo and run every test.

 ./pants compile test src:: test::

Targets and BUILD files

Targets are adressable project or dependency level modules that can be built by Pants. BUILD files are configuration files that define targets that can be built by Pants. Each target has a name and can be built by running a Pants task against the target's name and location.

For example, Fsq.io's JVM projects live under src/jvm here. You can compile Rogue by running:

 ./pants compile src/jvm/io/fsq/rogue:rogue

Build and Test every project

Adding a :: to a path will glob every target under that location. So to compile every target in Fsq.io:

 ./pants compile src::

Similarly, to run all the tests, (after starting the mongodb server):

./pants test test::

Projects aspirationally have READMEs at the project root.

Acknowledgements

  • Thanks to the great community supporting Pants.
  • Fsq.io is split from commits to our internal monorepo by Sapling, a git porcelain tool by @jsirois.

Discussion

Please open an issue if you have any questions or concerns.

License

Apache License, Version 2.0 (Apache-2.0)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].