Code Monkey home page Code Monkey logo

applications-setup-guide's Introduction

Renuo Applications Setup Guide

This repo is the Renuo collection of best-practices to set-up apps. We are a Rails company, so the most value probably will be found in the parts concerning Rails. But anyways you'll also find a lot about the inner workings of Renuo.

Some Notes on the Side

If you are reading this document, it means that you have to setup a new application. A new project started and it's now time to set everything up so that everyone, in your team, can start working on it.

This document will try to be as minimalist as possible and provide you with all the steps to set up the application as fast as possible. There are things, in Renuo projects, which are mandatory, other that are suggested.

The basic things that need to be ready before the team can start working on a project are:

  • An existing git repository containing the project
  • Two branches: main and develop
  • A README with essential information about the application
  • Convenience-scripts: bin/setup, bin/check, bin/fastcheck, bin/run
  • One running, green test
  • Continuous integration (CI) ready, running and green for both branches
  • Continuous deployment (CD) ready and running for both branches
  • The application deployed for both branches

As an appendix, you'll find a checklist you can use to follow the guide.

โ— Do not blindly follow this guide, always think about what you are doing and why. If you think something is wrong or simply outdated, improve this guide with a Pull Request.

We want you to know exactly the reason behind each single step of this guide.

Thank you for your work and have fun! ๐ŸŽ‰

License

Attribution 4.0 International (CC BY 4.0)

applications-setup-guide's People

Contributors

aneshodza avatar codarioo avatar coorasse avatar cuddlybunion341 avatar edmunteanu avatar firemind avatar gitbook-bot avatar hunchr avatar ignaciosy avatar janis-leuenberger avatar kjir avatar lionellindt avatar lukasbischof avatar lukaselmer avatar luz avatar macav avatar oliveranthony17 avatar pandermatt avatar phi-bre avatar rbuetzer avatar rnestler avatar samuelsteiner avatar samypesse avatar schmijos avatar sihu avatar simon-isler avatar srawrity avatar

Stargazers

 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

Forkers

lukaselmer

applications-setup-guide's Issues

Cloudflare + Heroku

To bring to work <project-name>-<branch>.renuoapp.ch, you have to also configure the domain in heroku. this part is missing.

Sentry with Heroku

WARN -- sentry: ** [Raven] You are running on Heroku but haven't enabled Dyno Metadata. 
For Sentry's release detection to work correctly, please run
 `heroku labs:enable runtime-dyno-metadata`

Is this always necessary and could be integrated in the setup guide?

Restructuring and Refactoring of the setup guide

As I already mentioned during the last SCRUM-Meeting I would like to put forward a 'rewrite' of the application setup guide.
For this, I'd propose using a tool like mdBook.

This would result in a printable, searchable and easier to navigate documentation.
Example: https://renuo.github.io/setup-documentation/general/introduction.html.

In addition to this I would like to discuss the following general changes:

Additions:

Change:

  • I would like to replace rubocop with https://github.com/testdouble/standard
    • Less friction during updates
    • No more configuration difference between projects
    • Trusted by other companies and thus sufficiently test for our usage

Evaluation:

  • Do we still need a React Native Project guide? Does management plan to further use the framework?

fetch vs [] for ENV access

Rubocop added a new rule that suggest using fetch over [] for accessing ENV: https://docs.rubocop.org/rubocop/cops_style.html#stylefetchenvvar

@schmijos @coorasse and I discussed this and came to the conclusion that we'd like to adopt this new rule.

Here are some other notes from the discussion:

  • it is good to be reminded to think about defaults when adding new ENV-vars
  • figaro (application.yml) should already ensure that a default is present
  • using fetch without a fallback value makes it clear that a value has to be set
  • using fetch with a fallback value makes it clear when a variable is optional
  • when applying the new linter suggestions the choice between with/without fallback value should be made based on the application.yml of the project

bin/setup: more transparent

for decisions, the user could/should make himself, i would like to introduce a command prompt (e.g. https://github.com/JEG2/highline) to let the user know, what the system would do for him. so it's up for the user, if he wants the let the bin/setup change system things. especially:

  • changing hosts-file
  • set up hooks
  • ..

Make RSpec default for all the projects

This issue is a suggestion to use always rspec for all our projects. This means to add the -T option when creating the application and adding the rspec-rails gem immediately.

Deprecate NewRelic

Discussion regarding if we want to keep NewRelic or not in our applications

RSpec Rubocop

Disable RSpec/MultipleExpectations check and enable failures aggregation globally with:

config.define_derived_metadata do |meta|
   meta[:aggregate_failures] = true
end

Block PHP and other nasty bots

How do we want to block these bots from triggering 404 exceptions?
Two ideas:

Discussion is open. Ideas are welcome.
I'd personally go for the first one to not depend too much on Cloudflare for these things. Also, it acts on middleware level, which is pretty fast and early.

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.