Git Product home page Git Product logo

fairmondo's Introduction

Welcome to the Fairmondo repository

<img alt=‘Stories in Ready’ src=‘https://badge.waffle.io/fairmondo/fairmondo.png?label=ready&title=Ready’ /> <img src=“https://travis-ci.org/fairmondo/fairmondo.svg?branch=develop” alt=“Build Status” /> <img src=“https://coveralls.io/repos/fairmondo/fairmondo/badge.svg?branch=develop” alt=“Coverage Status” /> <img src=“https://codeclimate.com/github/fairmondo/fairmondo.png” /> <img src=“https://gemnasium.com/fairmondo/fairmondo.svg” alt=“Dependency Status” /> <img src=“http://inch-ci.org/github/fairmondo/fairmondo.png” alt=“Inline docs” />

Fairmondo is a free market place in the hand of the users.

Read more about it at: www.fairmondo.de

Please help us out by contributing code.

Getting started

Installing Ruby and Ruby on Rails

If you are not sure how to install Ruby and the Ruby on Rails framework on your computer, have a look at Michael Hartl’s excellent tutorial on the subject.

Make sure you install 2.2.2. and not ruby 1.9.3-p392.

Fairmondo Project Setup

  • Set up a local git repository and switch to branch “develop”

    git clone [email protected]:fairmondo/fairmondo.git
    cd fairmondo/
    git checkout develop
  • Install required gems

    bundle install
    
  • Set up local version of secrets.yml

    cp config/secrets.yml.example config/secrets.yml
  • set up Postgres for development environment

  • set up database, load schema and seed

    rake db:create db:schema:load db:seed
  • if you would like to test the mailer, please open the copied file and update it according to your testing mail server

  • you may like to adopt the config/database.yml according to your wishes

  • to use the recaptcha you have to add your keys into your secrets.yml file. You can get the keys at www.google.com/recaptcha/admin/list

  • start rails and have fun

    rails server
    

Known Issues

  • Could not find pg-0.15.1 in any of the sources

    If you have an error like

    ...
    rake aborted!
    Could not find pg-0.15.1 in any of the sources
    ...

    Install the Postgres Library:

    sudo apt-get install libpq-dev

    Run Bundler

    bundle install
    
  • (Mac) Invalid gemspec […ZenTest-4.9.1.gemspec]

    If bundler constantly complains about an invalid ZenTest gemspec, run the following:

    gem uninstall ZenTest
    rm [path to the ZenTest-4.9.1.gemspec it gave you in the error message]
    gem update --system
    bundle
  • (Mac) libv8 issues with Mac osx catalina

    brew install [email protected]
    bundle config build.libv8 --with-system-v8
    bundle config build.therubyracer --with-v8-dir=$(brew --prefix [email protected])
    bundle install

Testing

To run the tests, type

rake test

NOTE: The tests need elasticsearch to run through (see below)

If you update your branch from before, you may have to migrate the test database:

RAILS_ENV=test rake db:migrate

Click here to read more about testing in our wiki.

The testsuite offers an option to stop at the first failing test and rescue in a pry console. To activate this use:

RESCUE=1 rake test

We also have some more tests built in:

  • Rails Best Practices (‘rails_best_practices`)

  • Brakeman (‘brakeman`)

  • Rubocop (‘rubocop`)

Workflow

If you want to help out with programming new features or fixing bugs, please consider the following guidelines:

  • If you do not have direct access to our github repository, you can fork it, make changes on your forked repo, and then submit a pull request

  • Branch management: “master” is the currently deployed version. New features are developed on the branch “develop” or feature branches that branch from develop. Bugfixes are currently done on “develop”. Please send merge requests to the appropriate branch (develop).

  • If you have access to our repository, please create a new git branch before making changes when coding a larger feature

    git checkout -b feature-[featurename]
  • We use BDD (Behavior Driven Development). Please read our wiki page on the subject.

  • When finished with a task:

    git add [corresponding files OR simply --all for everything]
    git commit -m "[description]"
    git push
  • If you created a new branch for a larger feature, you need to merge the changes after you are finished:

    git checkout develop
    git merge [featurename] master
    [you might need to resolve merge conflicts]
    git commit
    git push

Hint: When a vim window opened after you typed “git commit” without a commit message, you can save the default message by simply typing “:wq” and pressing enter.

Run Elasticsearch Server

To make the search available in your local environment you have to install Elasticsearch:

curl -k -L -o elasticsearch.tar.gz https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz
tar -zxvf elasticsearch.tar.gz
./elasticsearch-5.4.0/bin/elasticsearch-plugin install http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-plugin-bundle/5.4.0.0/elasticsearch-plugin-bundle-5.4.0.0-plugin.zip
./elasticsearch-5.4.0/bin/elasticsearch

Links for Elasticsearch: www.elasticsearch.org

Plugin we use: github.com/jprante/elasticsearch-plugin-bundle

Background Processing with sidekiq

To use our Background processing you have to setup a redis instance locally:

On Ubuntu/Debian:
  sudo apt-get install redis-server

For other systems try
  http://redis.io/

Aftwerwards start sidekiq with:

sidekiq -C config/sidekiq.yml

Contributing

Share the idea, take part at www.fairmondo.de/ and make the world a better place!

Regarding the source, there are two ways to contribute.

  1. Report a bug?

    • Just use the github issue tracker.

    • Please tag added bugs with the “bugs” tag

  2. Want to help out and join feature development?

    • Have a look at our issue list and work on whatever you like. Mainly look at [Milestone] Backlog [Label] free4all

    • Send us an email at [email protected] and work with us to make the world a better place

    • or make a github account and click on the button called “Fork” in the upper right corner of our repository. Then code a few cool features, commit and push your changes, and submit a “Pull Request” so we can implement your work.

fairmondo's People

Contributors

andreasknoepfle avatar berkes avatar borijee avatar chiramiso avatar derstoiker avatar djmaze avatar erezsob avatar gmichokostas avatar hesslau avatar kiyumars avatar konstantinko avatar linutux avatar mamhoff avatar marcaltmann avatar oskarrough avatar phansch avatar psub avatar rrrene avatar schmidie avatar sebastiansucker avatar tomwor avatar twiek 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  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  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

fairmondo's Issues

Grundpreis & Mengeneinheit kein Pflichtfeld

Bitte nicht als Pflichtfeld mit * auszeichnen. Das Feld ist zwar gesetzlich Pflicht, aber nur für bestimmte Warengruppen, die wir aber nicht automatisch identifizieren können.

Ich glaube mit Tobi habe ich schon drüber gesprochen.

Kaufabwicklung: Warenkorb Anzeige

Als ein eingeloggter Käufer möchte ich einen Warenkorb angezeigt bekommen.

(Split von #25: Kaufabwicklung für Käufer – Warenkorb Design und Umsetzung; Verwalten von gekauften Artikeln)

Preis und Mwst

m Verkaufsformular:

Textstring Preis sollte in "Verkaufspreis" umgewandelt werden.

Nur bei gewerblichen Händlern der Zusatz: "Der Verkaufspreis enthält die gesetzliche Mehrwertsteuer von" 7% bzw. 19% (als Dropdown Auswahl).

Bei der Produktansicht (Großansicht + Kachel) sollte unterhalb des Verkaufspreises, die Mwst von 7% bzw. 19% zu sehen sein (nicht bei Privatverkäufern).

Die Mwst gilt nur für Verkäufer/Käufer innerhalb Deutschlands (zur Zeit ist ja auch nur Registrierung mit deutscher Adresse möglich). Zumindest für Österreich/Schweiz wird Tine für uns die Umsetzung fürs Ausland aufbereiten.

Bullet-Warnings

Fix Bullet Warnings for N+1 Querys
(see rspec log for start)

Kaufabwicklung: PayPal

Als eingeloggter Käufer möchte ich meine Bestellungen mittels PayPal bezahlen können.

(Split von #25: Bezahlabwicklung zwischen Käufer/Verkäufer z.B. PayPal)

FFP Pioniere

Drei Teilaufgaben:

  1. Freischaltung von Artikeln beim Umstellen von Pionier auf Launchversion, Personen müssen dabei neue AGB/Datenschutz akzeptieren und alle Artikel explizit für Launch freischalten. Die Personen, die freischalten, erhalten Pionierstatus, siehe 2)

Bei Nutzern, die Artikel eingestellt aber nicht freigeschaltet haben, und nicht die neuen AGB abgehackt haben, werden die Artikel so lange vom Marktplatz genommen.

  1. Pioniere (z.B. per Flag) auszeichnen:

Pioniere können Privatpersonen und juristische Personen (Händler) werden.

und werden gekennzeichnet durch ein Logo/Badge (wird noch designed, bei Anne nachfragen) auf ihrem Profil

mit Info-Feld (was bedeutet Pionier) bei Mouse-over

Diese werden später besonders gefeatured (z.B. auf Startseite vorgestellt). Vertrieb sollte sich also alle Pioniere listen lassen können.

  1. Bestimmten Pionieren FFP zuteilen:

Alle Menschen, die

Privatpersonen sind!
• Produkte per Hand einstellen bis zum Launch und diese für den Launch aktivieren
bekommen automatisch FFP gutgeschrieben
• 10 FFP pro eingestelltes Produkt / abgesandtes Formular.

Kaufabwicklung 2

Statusverfolgung eines Artikels

Kauf durch nicht-registrierte Nutzer

Zur Diskussion: Profil deaktivieren bzw. löschen können

Sollte ja früher oder später direkt möglich sein und nicht nur über den Kundenservice.

Deaktivieren könnte z.B. bedeuten, dass wg Urlaub die Artikel aus dem Marktplatz genommen werden. Gibt es z.B. bei Amazon.

Sollten wir aber genauer spezifizieren, vielleicht eher - Urlaubseinstellungen aktiv - Deaktivieren (Verkäuferprofil nicht auffindbar) - Löschen

Article tags

On the desing we have four different categories of tags ('neu', 'fair', 'öko', 'klein&fein'). But right now the database seeds only provide 'neu' bzw 'gebraucht'. How can we get some test cases for the tags?

TinyCMS templates

Welches Layout ist für das TinyCMS content verantwortlich? Ich würde gern einen Wrapper um den Inhalt machen.

Kaufabwicklung

Kaufabwicklung für Käufer – Warenkorb Design und Umsetzung; Verwalten von gekauften Artikeln

Kaufabwicklung für Verkäufer – Verwalten von verkauften Artikeln, Benachrichtigungen, Rechnungsstellungen
Bezahlabwicklung zwischen Käufer/Verkäufer z.B. PayPal

Bezahlabwicklung zwischen Verkäufer und Fairnopoly – korrekte Rechnungsstellung, Einbindung Schnittstellen Payment Provider für Lastschrifteinzug der Provision

tinycms guide

Kann jemand noch mal kurz beschrieben wie ich eine funktionierende, 'statische' Seite über tinycms anlege?
Wenn ich zum Beispiel als key 'imprint' angebe, dann sollte ich doch unter localhost:3000/imprint die Seite sehen können, oder nicht?
Ich bekomme statdessen:
Tinycms::ContentsController#verify_authorized_with_exceptions
Gibt's a einen Trick?

Interne Nachrichten / Vorrecherche

Interne Nachrichten zwischen Käufern/Verkäufern ermöglichen, um Emailadressen nicht zu veröffentlichen – eventuell teilweise implementiert. Wichtig für Käufernachfragen etc.

Kaufabwicklung: Rechnungsstellung Fairnopoly -> Verkäufer

Als Verkäufer möchte ich eine korrekte Rechnung von Fairnopoly angezeigt bekommen.

(Split von #25: Bezahlabwicklung zwischen Verkäufer und Fairnopoly – korrekte Rechnungsstellung, Einbindung Schnittstellen Payment Provider für Lastschrifteinzug der Provision)

Kaufabwicklung: Verkäuferbenachrichtigung

Als Verkäufer möchte ich benachrichtigt werden, wenn ein Artikel verkauft wurde.

(Split von #25: Kaufabwicklung für Verkäufer – Verwalten von verkauften Artikeln, Benachrichtigungen, Rechnungsstellungen)

Signatur Emails muss angepasst werden

Alle von FN versandten Nachrichten sollten folgende Signatur haben:

-- Diese Nachricht wurde von Fairnopoly, https://beta.fairnopoly.de/, gesendet.

Kontakt: [email protected], Fairnopoly eG c/o Social Impact Lab, Erkelenzdamm 59-61, Portal 1, 10999 Berlin

Registergericht: Amtsgericht Berlin-Charlottenburg, GnR 738 B
Vorstand: Anna Kress, Bastian Neumann
Vorstandsvorsitzender: Felix Weth
Aufsichtsrat: Kim Stattaus, Anne Schollmeyer, Ernst Neumeister

Kaufabwicklung: Verwaltung von Verkäufen

Als Verkäufer möchte ich meine verkauften Artikel verwalten können.

(Split von #25: Kaufabwicklung für Verkäufer – Verwalten von verkauften Artikeln, Benachrichtigungen, Rechnungsstellungen)

Kaufabwicklung: Payment Provider Schnittstelle

Als Verkäufer möchte ich eine Payment Provider Schnittstelle für Lastschrifteinzug der Provision benutzen können.

(Split von #25: Bezahlabwicklung zwischen Verkäufer und Fairnopoly – korrekte Rechnungsstellung, Einbindung Schnittstellen Payment Provider für Lastschrifteinzug der Provision)

Kaufabwicklung: Statusverfolgung

Als ein Teilnehmer am Verkaufsprozess möchte ich den Status der Bestellung verfolgen können.
[2 in 1: Käufer und Verkäuferseite]

(Split von #29: Statusverfolgung eines Artikels)

Refactoring: Copy Images for Articles

A simple soloution needs to be found that doesn't need to copy around article-images on article template creation and derival.

A model based approach on linking images and having only one copy at anytime is preferred.

As images are in a m:n relationship to articles since the last refactoring this should be no great problem.

Konzept für Userevents erstellen

Tobias Schmid 3 months ago:

Ein Konzept erarbeiten, wann Userevents erzeugt werden wo und wie diese genau angezeigt werden.
Filterung der Userevents, sortieren, etc.

Userevent -> Userevents sollen kleine Benachrichtigungen an den User sein (z.B. "Du musst dein Profil bearbeiten bevor du Artikel einstellen kannst", "Es wurde auf dein Artikel ein gebot abgegeben", "Du hast eine Nachricht von XY erhalten",.....)

Anna Kress 3 months ago:

Finde ich gut, hatten wir ja schon besprochen. Aber ich würde mich freuen, wenn wir vorher die Testmeldungen alle abgearbeitet haben. Vielen Dank!

Optimierung Suche

"Schale" findet keine "Doppelschale".

Solr richtig konfigurieren:

  • spellings.txt
  • stopwords.txt
  • synonyms.txt

schema.xml:

  • text suche einstellen (wirdcards etc.)
  • evtl. performance einstellungen anpassen (siehe auch PERFORMANCE NOTE)

Kaufabwicklung

Kaufabwicklung für Käufer – Warenkorb Design und Umsetzung; Verwalten von gekauften Artikeln

Kaufabwicklung für Verkäufer – Verwalten von verkauften Artikeln, Benachrichtigungen, Rechnungsstellungen

Bezahlabwicklung zwischen Käufer/Verkäufer z.B. PayPal

Bezahlabwicklung zwischen Verkäufer und Fairnopoly – korrekte Rechnungsstellung, Einbindung Schnittstellen Payment Provider für Lastschrifteinzug der Provision

Markup change for buttons, accordions and tags

Hello,

We need to change the markup for all buttons.
That includes, buttons, accordions and tags.

Also, if it can help, you will see an exemple of what the buttons look if you can copy paste the html code in a tinycms content page http://localhost:3000/admin/tinycms~content

Buttons are <a> elements, icons are <i> elements inside the <a> and before its text
Numbers in the right edge of some buttons are <span> with the "number" class.

Don't hesitate to ask for precisions.

Hugo

Buttons classes explained

The "&" means that this class needs the whole tree ahead to function

.Btn === the classic blue button with a padding of 15x15, font size 17px
    &.Btn--green === classic blue but green btn
    &.Btn--greenSmall === green but font size 14px instead of 17px
    &.Btn--gray === same as blue but gray

    &.Btn-tag === a tag button and its colors variations
        &.Btn-tag--gray
        &.Btn-tag--blue
        &.Btn-tag--green
        &.Btn-tag--orange

    &.Btn-accordion === the accordion button with an arrow only
        &.accordion-is-active === same as above but gray and arrow down because active

    &.Btn-icon === close to Btn-accordion but an other left icon instead of the arrow
        &.icon-arrow
        &.icon-arrow--active
        &.icon-box
        &.icon-box--open
        &.icon-paper

Markup exemple

<div> <p>Normal buttons, blue, green, greenSmall and gray</p>
    <a href="#" class="Btn">Btn</a>
    <a href="#" class="Btn Btn--green">Btn Btn--green</a>
    <a href="#" class="Btn Btn--greenSmall">Btn Btn--greenSmall</a>
    <a href="#" class="Btn Btn--gray">Btn Btn--gray</a>
</div>

<div> <p>The button tags</p>
    <a href="#" class="Btn Btn-tag Btn-tag--gray">Btn Btn-tag Btn-tag--gray</a>
    <a href="#" class="Btn Btn-tag Btn-tag--blue">Btn Btn-tag Btn-tag--blue</a>
    <a href="#" class="Btn Btn-tag Btn-tag--green">Btn Btn-tag Btn-tag--green</a>
    <a href="#" class="Btn Btn-tag Btn-tag--orange">Btn Btn-tag Btn-tag--orange</a>
</div>

<div> <p>The button accordion and icons</p>
    <a href="#" class="Btn Btn-accordion">
        <i class="icon-arrow"></i>Btn Btn-accordion
    </a>
    <a href="#" class="Btn Btn-accordion accordion-is-active">
        <i class="icon-arrow--active"></i>Btn Btn-accordion accordion-is-active icon-arrow--active
    </a>
    <a href="#" class="Btn Btn-accordion Btn-accordion--number">
        <i class="icon-arrow"></i>Btn Btn-accordion Btn-accordion--number icon-arrow
        <span class="number"></span>
    </a>
    <a href="#" class="Btn Btn-icon">
        <i class="icon-box"></i>Btn Btn-icon icon-box
        <span class="number">15000</span>
    </a>
    <a href="#" class="Btn Btn-icon">
        <i class="icon-box--open"></i>Btn Btn-icon icon-box
        <span class="number">9</span>
    </a>
    <a href="#" class="Btn Btn-icon">
        <i class="icon-paper"></i>Btn Btn-icon icon-box
        <span class="number">18</span>
    </a>
</div>

Verkaufsformular Reihenfolge ändern

Die optionalen Schritte in der Liste ganz nach unten, aber noch vor Artikel einstellen schieben (derzeit nur Auszeichnungen, weil wir freundliches Prozent rausgenommen haben), also bisheriger Schritt 2 vor Artikel einstellen runtergeschoben. Und Beschriftung ein weniig angepasst, also optional davor: "Optional: Schritt 5 - Auszeichnung". Natürlich müssen dann die Schrittzahlen angepasst werden.

Code Documentation

Multiple contributors complained about a lack of documentation in our code. To make it easier for developers to understand code other people contributed we should aim for an increase in code documentation.

I propose we use YARD.

If someone wants to go through the existing code and add documentation, that would be great.

Apart from that, new code should be documented the moment it is written.

Artikel bearbeiten / löschen

Artikel können nicht direkt bearbeitet werden !
(Ein Artikel sollte mit amoeba_dup dupliziert werden)

bearbeiten / löschen ist nur möglich wenn der Artikel vom Marktplatz genommen wurde.

Kaufabwicklung: Bestellungs-Verwaltung

Als eingeloggter Käufer möchte ich meine gekauften Artikel verwalten können.

(Split von #25: Kaufabwicklung für Käufer – Warenkorb Design und Umsetzung; Verwalten von gekauften Artikeln)

Kaufabwicklung: Verbindliche Bestellung

Als eingeloggter Käufer möchte ich über den Warenkorb einen Artikel verbindlich bestellen können.

(Split von #25: Kaufabwicklung für Käufer – Warenkorb Design und Umsetzung; Verwalten von gekauften Artikeln)

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.