commit initial

master
François Poulain 2019-07-03 13:04:45 +02:00 commité par François Poulain
révision bb5c025b2d
28 fichiers modifiés avec 3622 ajouts et 0 suppressions

3
.gitattributes externe Normal file
Voir le fichier

@ -0,0 +1,3 @@
initiatives_paysannes/static/** -diff
assets/img/** -diff
assets/fonts/** -diff

39
.gitignore externe Normal file
Voir le fichier

@ -0,0 +1,39 @@
# Editors
*~
*.sw[po]
# Python
*.py[cod]
__pycache__
# Virtual environment
.env
venv
# Logs
logs
*.log
pip-log.txt
# Unit test / coverage reports
.coverage
.tox
nosetests.xml
htmlcov
# Translations
*.mo
*.pot
# NPM
node_modules/
# Databases
sqlite.db
# Local configuration
config.env
# Local overrides and variable content
local/
var/

276
.stylelintrc Normal file
Voir le fichier

@ -0,0 +1,276 @@
{
"extends": ["stylelint-config-standard", "stylelint-config-recommended-scss"],
"plugins": [
"stylelint-order"
],
"rules": {
"at-rule-empty-line-before": null,
"at-rule-name-space-after": "always",
"at-rule-no-vendor-prefix": true,
"at-rule-semicolon-space-before": "never",
"block-closing-brace-empty-line-before": null,
"block-closing-brace-newline-after": null,
"block-opening-brace-space-before": null,
"color-named": "never",
"declaration-block-semicolon-newline-after": "always-multi-line",
"declaration-block-semicolon-newline-before": "never-multi-line",
"declaration-block-semicolon-space-after": "always-single-line",
"declaration-empty-line-before": null,
"declaration-no-important": true,
"font-family-name-quotes": "always-where-recommended",
"font-weight-notation": [
"numeric", {
"ignore": ["relative"]
}],
"function-url-no-scheme-relative": true,
"function-url-quotes": "always",
"length-zero-no-unit": true,
"max-empty-lines": 2,
"max-line-length": null,
"media-feature-name-no-vendor-prefix": true,
"media-feature-parentheses-space-inside": "never",
"media-feature-range-operator-space-after": "always",
"media-feature-range-operator-space-before": "never",
"no-descending-specificity": null,
"no-duplicate-selectors": true,
"number-leading-zero": "never",
"media-feature-name-no-unknown": [true, {
"ignoreMediaFeatureNames": ["prefers-reduced-motion"]
}],
"order/properties-order": [
"position",
"top",
"right",
"bottom",
"left",
"z-index",
"box-sizing",
"display",
"flex",
"flex-align",
"flex-basis",
"flex-direction",
"flex-wrap",
"flex-flow",
"flex-shrink",
"flex-grow",
"flex-order",
"flex-pack",
"align-content",
"align-items",
"align-self",
"justify-content",
"order",
"float",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"overflow",
"overflow-x",
"overflow-y",
"-webkit-overflow-scrolling",
"-ms-overflow-x",
"-ms-overflow-y",
"-ms-overflow-style",
"columns",
"column-count",
"column-fill",
"column-gap",
"column-rule",
"column-rule-width",
"column-rule-style",
"column-rule-color",
"column-span",
"column-width",
"orphans",
"widows",
"clip",
"clear",
"font",
"font-family",
"font-size",
"font-style",
"font-weight",
"font-variant",
"font-size-adjust",
"font-stretch",
"font-effect",
"font-emphasize",
"font-emphasize-position",
"font-emphasize-style",
"font-smooth",
"src",
"hyphens",
"line-height",
"color",
"text-align",
"text-align-last",
"text-emphasis",
"text-emphasis-color",
"text-emphasis-style",
"text-emphasis-position",
"text-decoration",
"text-indent",
"text-justify",
"text-outline",
"-ms-text-overflow",
"text-overflow",
"text-overflow-ellipsis",
"text-overflow-mode",
"text-shadow",
"text-transform",
"text-wrap",
"-webkit-text-size-adjust",
"-ms-text-size-adjust",
"letter-spacing",
"-ms-word-break",
"word-break",
"word-spacing",
"-ms-word-wrap",
"word-wrap",
"overflow-wrap",
"tab-size",
"white-space",
"vertical-align",
"direction",
"unicode-bidi",
"list-style",
"list-style-position",
"list-style-type",
"list-style-image",
"pointer-events",
"-ms-touch-action",
"touch-action",
"cursor",
"visibility",
"zoom",
"table-layout",
"empty-cells",
"caption-side",
"border-spacing",
"border-collapse",
"content",
"quotes",
"counter-reset",
"counter-increment",
"resize",
"user-select",
"nav-index",
"nav-up",
"nav-right",
"nav-down",
"nav-left",
"background",
"background-color",
"background-image",
"filter",
"background-repeat",
"background-attachment",
"background-position",
"background-position-x",
"background-position-y",
"background-clip",
"background-origin",
"background-size",
"border",
"border-color",
"border-style",
"border-width",
"border-top",
"border-top-color",
"border-top-style",
"border-top-width",
"border-right",
"border-right-color",
"border-right-style",
"border-right-width",
"border-bottom",
"border-bottom-color",
"border-bottom-style",
"border-bottom-width",
"border-left",
"border-left-color",
"border-left-style",
"border-left-width",
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"border-image",
"border-image-source",
"border-image-slice",
"border-image-width",
"border-image-outset",
"border-image-repeat",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"box-shadow",
"opacity",
"-ms-interpolation-mode",
"page-break-after",
"page-break-before",
"page-break-inside",
"transition",
"transition-delay",
"transition-timing-function",
"transition-duration",
"transition-property",
"transform",
"transform-origin",
"perspective",
"appearance",
"animation",
"animation-name",
"animation-duration",
"animation-play-state",
"animation-timing-function",
"animation-delay",
"animation-iteration-count",
"animation-direction",
"animation-fill-mode",
"fill",
"stroke"
],
"property-no-vendor-prefix": true,
"rule-empty-line-before": null,
"selector-attribute-quotes": "always",
"selector-list-comma-newline-after": "always",
"selector-list-comma-newline-before": "never-multi-line",
"selector-list-comma-space-after": "always-single-line",
"selector-list-comma-space-before": "never-single-line",
"selector-max-attribute": 2,
"selector-max-class": 4,
"selector-max-combinators": 4,
"selector-max-compound-selectors": 4,
"selector-max-empty-lines": 1,
"selector-max-id": 0,
"selector-max-specificity": null,
"selector-max-type": 2,
"selector-max-universal": 1,
"selector-no-qualifying-type": true,
"selector-no-vendor-prefix": true,
"string-quotes": "double",
"value-keyword-case": "lower",
"value-list-comma-newline-after": "never-multi-line",
"value-list-comma-newline-before": "never-multi-line",
"value-list-comma-space-after": "always",
"value-no-vendor-prefix": true
}
}

661
LICENSE Normal file

Fichier diff supprimé car celui-ci est trop grand Voir la Diff

77
README.md Normal file
Voir le fichier

@ -0,0 +1,77 @@
# Initiatives Paysannes
Placeholder
## Assets
The assets - e.g. CSS, JavaScript, images, fonts - are generated using a
[Gulp](https://gulpjs.com/)-powered build system with these features:
- SCSS compilation and prefixing
- JavaScript module bundling with webpack
- Styleguide and components preview
- Built-in BrowserSync server
- Compression for production builds
The source files live in `assets/`, and the styleguide in `styleguide/`.
### Requirements
You will need to have [npm](https://www.npmjs.com/) installed on your system.
If you are running Debian, do not rely on the npm package which is either
outdated or removed - starting from Debian Stretch. Instead, here is a way
to install the last version as a regular user:
1. Ensure that you have the following Debian packages installed, from at least
`stretch-backports`:
- nodejs
- node-rimraf
2. Set the npm's installation prefix as an environment variable:
$ export npm_config_prefix=~/.node_modules
3. Retrieve and execute the last npm's installation script:
$ curl -L https://www.npmjs.com/install.sh | sh
4. Add the npm's binary folder to your environment variables:
$ export PATH="${HOME}/.node_modules/bin:${PATH}"
In order to keep those environment variables the next time you will log in,
you can append the following lines to the end of your `~/.profile` file:
```bash
if [ -d "${HOME}/.node_modules/bin" ] ; then
PATH="${HOME}/.node_modules/bin:${PATH}"
export npm_config_prefix=~/.node_modules
fi
```
5. That's it! You can check that npm is now installed by running the following:
$ npm --version
### Usage
Start by installing the application dependencies - which are defined in
`package.json` - by running: `npm install`.
The following tasks are then available:
- `npm run build`: build all the assets for development and production use,
and put them in the static folder - e.g `initiatives_paysannes/static`.
- `npm run styleguide`: run a server with the styleguide and watch for file
changes.
- `npm run serve`: run a proxy server to the app - which must already be served on
`localhost:8000` - with the styleguide on `/stylguide` and watch for file
changes.
- `npm run lint`: lint the JavaScript and the SCSS code.
In production, only the static files will be used. It is recommended to commit
the compiled assets just before a new release only. This will prevent to have a
growing repository due to the minified files.
## License
Initiatives Paysannes is developed by Cliss XXI and licensed under the
[AGPLv3+](LICENSE).

BIN
assets/img/banniere.jpg Normal file

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 309 KiB

BIN
assets/img/banniere.xcf Normal file

Fichier binaire non affiché.

BIN
assets/img/logo.png Normal file

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 249 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 193 KiB

BIN
assets/img/logo_fusion.png Normal file

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 216 KiB

BIN
assets/img/logo_reseau.png Normal file

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 240 KiB

18
assets/js/app.js Normal file
Voir le fichier

@ -0,0 +1,18 @@
import $ from 'jquery';
import './vendor/bootstrap';
// Export jQuery for external usage
window.jQuery = window.$ = $; // eslint-disable-line no-multi-assign
// -----------------------------------------------------------------------------
// Main application
// -----------------------------------------------------------------------------
$(() => {
$('.no-js').removeClass('no-js');
// Initialize Popover and Tooltip on the whole page
$('[data-toggle="popover"]').popover();
$('[data-toggle="tooltip"]').tooltip();
});

23
assets/js/vendor/bootstrap.js externe Normal file
Voir le fichier

@ -0,0 +1,23 @@
// -----------------------------------------------------------------------------
// Bootstrap 4
// -----------------------------------------------------------------------------
// see: ../../node_modules/bootstrap/js/src/index.js
// Import all Bootstrap components
import 'bootstrap';
// ... or import them individually
// import 'bootstrap/js/dist/util';
// import 'bootstrap/js/dist/alert';
// import 'bootstrap/js/dist/button';
// import 'bootstrap/js/dist/carousel';
// import 'bootstrap/js/dist/collapse';
// import 'bootstrap/js/dist/dropdown';
// import 'bootstrap/js/dist/modal';
// import 'bootstrap/js/dist/popover';
// import 'bootstrap/js/dist/scrollspy';
// import 'bootstrap/js/dist/tab';
// import 'bootstrap/js/dist/toast';
// import 'bootstrap/js/dist/tooltip';

Voir le fichier

@ -0,0 +1,29 @@
// -----------------------------------------------------------------------------
// Bootstrap's configuration for the application
// -----------------------------------------------------------------------------
// see: ../../node_modules/bootstrap/scss/_variables.scss
$blue: #424d88;
$cyan: #55b2de;
$green: #9fc121;
$orange: #f18d1c;
$red: #dc2020;
$primary: #679320;
$secondary: #db6a0f;
$theme-colors: (
"blue": $blue,
"cyan": $cyan,
"green": $green,
"orange": $orange,
"red": $red,
);
// Fonts
$font-family-sans-serif: "Open Sans", arial, sans-serif;
$font-weight-normal: 400;
$font-weight-semibold: 600;
$font-weight-bold: 700;

Voir le fichier

@ -0,0 +1,8 @@
// -----------------------------------------------------------------------------
// Application-wide variables
// -----------------------------------------------------------------------------
/// Path to fonts and images folders, relative to css/app.css.
/// @type String
$font-path: "../fonts";
$img-path: "../img";

22
assets/scss/app.scss Normal file
Voir le fichier

@ -0,0 +1,22 @@
@charset "utf-8";
// Configuration and helpers
@import "abstracts/variables";
@import "abstracts/variables-bootstrap";
// Vendors
@import "vendor/bootstrap";
// Base styles
@import "base/fonts";
// Layout-related sections
//@import "layout/header";
//@import "layout/footer";
// Components
@import "components/forms";
@import "components/listes";
// Page-specific styles
//@import "pages/home";

Voir le fichier

@ -0,0 +1,13 @@
// -----------------------------------------------------------------------------
// Font faces declarations
// -----------------------------------------------------------------------------
/// Fork Awesome variables
@import "fork-awesome/scss/variables";
// Opensans
$FontPathOpenSans: "#{$font-path}/open-sans";
@import "open-sans-fonts/open-sans-regular";
@import "open-sans-fonts/open-sans-semibold";
@import "open-sans-fonts/open-sans-bold";

Voir le fichier

@ -0,0 +1,9 @@
// -----------------------------------------------------------------------------
// Forms component's extension
// -----------------------------------------------------------------------------
// Indicate that a form field is required.
.required {
font-size: 90%;
color: $danger;
}

Voir le fichier

@ -0,0 +1,51 @@
// -----------------------------------------------------------------------------
// Listes component
// -----------------------------------------------------------------------------
$arrow-right-offset: 1.1em;
.item-arrow {
list-style-type: none;
> dt::before,
> li::before {
margin-right: 1ex;
margin-left: -$arrow-right-offset;
font-family: $fa-font-family;
content: $fa-var-arrow-right;
}
dt::before {
margin-right: .2em;
}
dt,
dd {
display: inline;
}
dd::after {
display: block;
width: 0;
height: 0;
content: "";
}
}
@each $theme, $color in $theme-colors {
.item-arrow-#{$theme} {
dt::before,
li::before {
color: $color;
}
}
}
@each $theme, $color in $theme-colors {
.item-#{$theme} {
list-style-type: none;
li::before {
margin-right: 1ex;
margin-left: -$arrow-right-offset;
font-family: $fa-font-family;
color: $color;
content: $fa-var-circle;
}
}
}

Voir le fichier

@ -0,0 +1,12 @@
@charset "utf-8";
// Configuration and helpers
@import "abstracts/variables";
// Fork Awesome
// ------------
// @link https://forkawesome.github.io/
$fa-font-path: "#{$font-path}/fork-awesome";
@import "fork-awesome/scss/fork-awesome";

48
assets/scss/vendor/_bootstrap.scss externe Normal file
Voir le fichier

@ -0,0 +1,48 @@
// ----------------------------------------------------------------------------
// Bootstrap 4
// ----------------------------------------------------------------------------
// see: ../../node_modules/bootstrap/scss/bootstrap.scss
/// Import all Bootstrap components
@import "bootstrap/scss/bootstrap";
/// ... or import them individually
//@import "bootstrap/scss/functions";
//@import "bootstrap/scss/variables";
//@import "bootstrap/scss/mixins";
//@import "bootstrap/scss/root";
//@import "bootstrap/scss/reboot";
//@import "bootstrap/scss/type";
//@import "bootstrap/scss/images";
//@import "bootstrap/scss/code";
//@import "bootstrap/scss/grid";
//@import "bootstrap/scss/tables";
//@import "bootstrap/scss/forms";
//@import "bootstrap/scss/buttons";
//@import "bootstrap/scss/transitions";
//@import "bootstrap/scss/dropdown";
//@import "bootstrap/scss/button-group";
//@import "bootstrap/scss/input-group";
//@import "bootstrap/scss/custom-forms";
//@import "bootstrap/scss/nav";
//@import "bootstrap/scss/navbar";
//@import "bootstrap/scss/card";
//@import "bootstrap/scss/breadcrumb";
//@import "bootstrap/scss/pagination";
//@import "bootstrap/scss/badge";
//@import "bootstrap/scss/jumbotron";
//@import "bootstrap/scss/alert";
//@import "bootstrap/scss/progress";
//@import "bootstrap/scss/media";
//@import "bootstrap/scss/list-group";
//@import "bootstrap/scss/close";
//@import "bootstrap/scss/toasts";
//@import "bootstrap/scss/modal";
//@import "bootstrap/scss/tooltip";
//@import "bootstrap/scss/popover";
//@import "bootstrap/scss/carousel";
//@import "bootstrap/scss/spinners";
//@import "bootstrap/scss/utilities";
//@import "bootstrap/scss/print";

273
gulpfile.js Normal file
Voir le fichier

@ -0,0 +1,273 @@
const gulp = require('gulp');
const plugins = require('gulp-load-plugins');
const merge = require('merge-stream');
const sherpa = require('style-sherpa');
const named = require('vinyl-named');
const webpack = require('webpack');
const webpackStream = require('webpack-stream');
const browser = require('browser-sync').create();
// Load all Gulp plugins into one variable
const $ = plugins();
/// Configuration -------------------------------------------------------------
const CONFIG = {
// Proxy target of the BrowserSync'server
SERVER_PROXY: 'http://127.0.0.1:8000',
// Port on which the BrowserSync'server will listen
SERVER_PORT: 8090,
// Paths to other assets which will be copied
ASSETS_FILES: [
{
src: [
'assets/**/*',
'!assets/{img,js,scss}',
'!assets/{img,js,scss}/**/*'
],
dest: ''
},
{
// ForkAwesome
src: 'node_modules/fork-awesome/fonts/*',
dest: 'fonts/fork-awesome'
},
{
// Open Sans
src: 'node_modules/open-sans-fonts/open-sans/{Bold*,Italic,Regular,Semibold*}/*',
dest: 'fonts/open-sans'
}
],
// Paths to images which will be compressed and copied
IMAGES_FILES: [
'assets/img/**/*'
],
// Paths to JavaScript entries which will be bundled
JS_ENTRIES: [
'assets/js/app.js'
],
// Paths to Sass files which will be compiled
SASS_ENTRIES: [
'assets/scss/app.scss',
'assets/scss/fork-awesome.scss'
],
// Paths to Sass libraries, which can then be loaded with @import
SASS_INCLUDE_PATHS: [
'node_modules'
],
// Path to the build output, which will never be cleaned
BUILD_PATH: 'initiatives_paysannes/static'
};
/// CSS -----------------------------------------------------------------------
// Compile Sass into CSS.
gulp.task('sass', function() {
return gulp.src(CONFIG.SASS_ENTRIES)
.pipe($.sourcemaps.init())
.pipe($.sass({
includePaths: CONFIG.SASS_INCLUDE_PATHS
}).on('error', $.sass.logError))
.pipe($.autoprefixer())
.pipe($.sourcemaps.write('.'))
.pipe(gulp.dest(`${CONFIG.BUILD_PATH}/css`))
.pipe(browser.reload({ stream: true }));
});
// Lint Sass files.
gulp.task('lint:sass', function() {
return gulp.src('assets/scss/**/*.scss')
.pipe($.stylelint({
failAfterError: true,
reporters: [
{ formatter: 'verbose', console: true }
]
}));
});
// Compress CSS files.
gulp.task('compress:css', function() {
return gulp.src([
`${CONFIG.BUILD_PATH}/css/*.css`,
`!${CONFIG.BUILD_PATH}/css/*.min.css`
])
.pipe($.cleanCss())
.pipe($.rename({ suffix: '.min' }))
.pipe(gulp.dest(`${CONFIG.BUILD_PATH}/css`));
});
gulp.task('css',
gulp.series('sass', 'compress:css'));
/// JavaScript ----------------------------------------------------------------
let webpackConfig = {
devtool: 'source-map',
mode: 'development',
module: {
rules: [
{
test: /.js$/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
compact: false
}
}
}
]
},
stats: {
chunks: false,
entrypoints: false,
}
}
// Bundle JavaScript module.
gulp.task('javascript', function() {
return gulp.src(CONFIG.JS_ENTRIES)
.pipe(named())
.pipe(webpackStream(webpackConfig, webpack))
.pipe(gulp.dest(`${CONFIG.BUILD_PATH}/js`));
});
// Lint JavaScript source files.
gulp.task('lint:javascript', function() {
return gulp.src('assets/js/**/*.js')
.pipe($.eslint())
.pipe($.eslint.format())
.pipe($.eslint.failAfterError());
});
// Compress JavaScript files.
gulp.task('compress:javascript', function() {
return gulp.src([
`${CONFIG.BUILD_PATH}/js/*.js`,
`!${CONFIG.BUILD_PATH}/js/*.min.js`
])
.pipe($.terser().on('error', e => { console.log(e); }))
.pipe($.rename({ suffix: '.min' }))
.pipe(gulp.dest(`${CONFIG.BUILD_PATH}/js`));
});
gulp.task('scripts',
gulp.series('javascript', 'compress:javascript'));
/// Other assets --------------------------------------------------------------
// Compress and copy images.
gulp.task('images', function() {
return gulp.src(CONFIG.IMAGES_FILES)
.pipe($.imagemin({ progressive: true }))
.pipe(gulp.dest(`${CONFIG.BUILD_PATH}/img`));
});
// Copy other assets files.
gulp.task('copy', function() {
return merge(CONFIG.ASSETS_FILES.map(
item => gulp.src(item.src)
.pipe(gulp.dest(`${CONFIG.BUILD_PATH}/${item.dest}`))
));
});
/// HTML files ----------------------------------------------------------------
// Generate a style guide from the Markdown content.
gulp.task('styleguide', done => {
sherpa('styleguide/index.md', {
output: 'styleguide/index.html',
template: 'styleguide/template.html'
}, done);
});
/// General tasks -------------------------------------------------------------
// Build and compress CSS, JavaScript and other assets.
gulp.task('build',
gulp.parallel('css', 'scripts', 'images', 'copy', 'styleguide'));
// Watch for changes to static assets, Sass and JavaScript.
gulp.task('watch', function() {
gulp.watch([].concat.apply([], CONFIG.ASSETS_FILES.map(a => a.src)),
gulp.series('copy', reload));
gulp.watch('assets/scss/**/*.scss',
gulp.series('sass'));
gulp.watch('assets/js/**/*.js',
gulp.series('javascript', reload));
gulp.watch('assets/img/**/*',
gulp.series('images', reload));
gulp.watch(['styleguide/*', '!styleguide/index.html'],
gulp.series('styleguide', reload));
});
// Run a development server and watch for file changes.
gulp.task('serve',
gulp.series(proxyServer, 'watch'));
// Run a preview server and watch for file changes.
gulp.task('serve:styleguide',
gulp.series(styleguideServer, 'watch'));
// Lint Sass and JavaScript sources.
gulp.task('lint',
gulp.parallel('lint:sass'));
// An alias to the 'build' task.
gulp.task('default',
gulp.parallel('build'));
/// Internal tasks ------------------------------------------------------------
// Start a server with BrowserSync and proxify the application in.
function proxyServer(done) {
browser.init({
proxy: CONFIG.SERVER_PROXY,
port: CONFIG.SERVER_PORT,
serveStatic: [
{
route: '/static',
dir: CONFIG.BUILD_PATH
},
{
route: '/styleguide',
dir: './styleguide'
}
],
ghostMode: false,
notify: false
});
done();
}
// Start a server with BrowserSync with the styleguide.
function styleguideServer(done) {
browser.init({
server: {
baseDir: './styleguide',
routes: {
'/static': CONFIG.BUILD_PATH
}
},
port: CONFIG.SERVER_PORT,
ghostMode: false,
notify: false
});
done();
}
// Reload the BrowserSync server.
function reload(done) {
browser.reload();
done();
}

Voir le fichier

@ -0,0 +1,192 @@
<html class="no-js" lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Initiatives Paysannes
--
Pour des fermes vivantes et diversifiées sur tout le territoire des Hauts De France !
</title>
<link rel="stylesheet" href="static/css/fork-awesome.css">
<link rel="stylesheet" href="static/css/app.css">
</head>
<body>
<div class="app-container">
<img class="w-100" src="static/img/banniere.jpg" alt="Bannière"></img>
<main class="app-content">
<div class="container content-container">
<div class="mt-3 row align-items-center">
<div class="col-12 col-md-6 col-lg-4">
<img class="w-100" src="static/img/logo.png" alt="logos de Initiatives Paysannes"></img>
</div>
<div class="col-12 d-md-none d-lg-block col-lg-4">
<div class="text-blue lead">
Pour des fermes vivantes et diversifiées sur tout le territoire des Hauts De France !
</div>
</div>
<div class="col-12 col-md-6 col-lg-4">
<div class="card text-white bg-orange mb-3">
<div class="card-body">
<h3 class="card-title">
Antenne d'Arras
</h3>
<p class="card-text">
40 avenue Roger Salengro<br>
62&nbsp;223 Saint-Laurent Blangy
</p>
<hr>
<h3 class="card-title">
Antenne d'Amiens
</h3>
<p class="card-text">
14 rue du 8 mai 1945<br>
80&nbsp;090 Amiens
</p>
</div>
</div>
</div>
<div class="col-12 d-none d-md-block d-lg-none col-lg-4">
<div class="lead">
Pour des fermes vivantes et diversifiées sur tout le territoire des Hauts De France !
</div>
</div>
</div>
<h2 class="my-4">Nos actions&nbsp;:</h2>
<div class="row align-items-center">
<div class="col-12 col-lg-4">
<h3 class="text-green">Accompagner la transmission des fermes</h3>
<ul class="item-green">
<li>Un accompagnement personnalisé avec une approche globale afin d’élaborer un plan d’action</li>
<li>Une mise en relation avec un ou des repreneurs</li>
<li>Un diagnostic transmission</li>
</ul>
<h3 class="text-red">Accompagner l’installation</h3>
<ul class="item-red">
<li>Un accompagnement personnalisé depuis l’émergence du projet jusqu’à 3 ans après l’installation</li>
<li>Un prêt d’honneur</li>
<li>Une formation longue de terrain adaptée à vos besoins : le Pass Installation APTEA</li>
</ul>
<h3 class="text-cyan">Sensibiliser le public aux enjeux de l’agriculture paysanne :</h3>
<ul class="item-cyan">
<li>Une fête de l’agriculture paysanne chaque année sur le territoire</li>
<li>Des chantiers participatifs</li>
<li>Des cinés débats, etc</li>
</ul>
</div>
<div class="col-12 col-lg-4">
<div class="card text-white bg-primary mb-3">
<div class="card-header">
<h3>Initiatives paysannes</h3>
est une association qui rassemble des paysans, des porteurs de projet, des artisans et des citoyens.
</div>
<div class="card-body">
<h4 class="card-title">
Notre vocation : développer et promouvoir l’agriculture paysanne :
</h4>
<p class="card-text">
<ul class="item-arrow">
<li>nourricière,</li>
<li>citoyenne,</li>
<li>respectueuse de l’environnement,</li>
<li>créatrice d’emploi,</li>
<li>en lien avec les territoires.</li>
</ul>
Nous soutenons le développement d’une agriculture alternative à l’agriculture industrielle et productiviste, en permettant des installations nombreuses grâce à une répartitrion équitable des moyens de productions.
</p>
</div>
</div>
</div>
<div class="col-12 col-lg-4">
<h3 class="text-blue">Promouvoir les semences paysannes</h3>
<ul class="item-blue">
<li>Un réseau d’expérimentation agronomiques et boulangères de blés anciens</li>
<li>Un accompagnement à la structuration de filières locales et équitables du « blé au pain »</li>
<li>Une veille juridique</li>
</ul>
<h3 class="text-primary">Favoriser les pratiques en agriculture paysanne</h3>
<ul class="item-primary">
<li>Un accompagnement personnalisé à l’évolutrion de votre ferme, avec une approche gloable, à toute étape de votre carrière</li>
<li>Des groupes d’échanges entre paysan.nes sur les thématiques qui vous interessent</li>
<li>Un outil de vision et d’évolution durable de votre ferme : le diagnoctic Agriculture Paysanne</li>
<li>Des visites de fermes</li>
</ul>
<h3 class="text-orange">Organiser des formations sur toutes ces thématiques</h3>
</div>
</div>
<h2 class="my-4">Pour en savoir plus&nbsp;:</h2>
<div class="row">
<div class="col-12 col-lg-6" >
<h3 class="text-secondary">Contacts</h3>
<h4 class="text-red">Installation</h4>
<i class="text-primary fa fa-envelope mr-2"></i>
<a href="mailto:installation@initiatives-paysannes.fr">installation@initiatives-paysannes.fr</a>
<br>
<i class="text-primary fa fa-phone mr-2"></i>
<a href="tel:+33921243152">09 21 24 31 52 (Arras)</a>
ou
<a href="tel:+33922421257">09 22 42 12 57 (Amiens)</a>
<hr>
<h4 class="text-green">Transmission</h4>
<i class="text-primary fa fa-envelope mr-2"></i>
<a href="mailto:transmission@initiatives-paysannes.fr">transmission@initiatives-paysannes.fr</a>
<br>
<i class="text-primary fa fa-phone mr-2"></i>
<a href="tel:+33921243154">09 21 24 31 54 (Arras)</a>
ou
<a href="tel:+33922421257">09 22 42 12 57 (Amiens)</a>
<hr>
<h4 class="text-blue">Semences paysannes</h4>
<i class="text-primary fa fa-envelope mr-2"></i>
<a href="mailto:semences@initiatives-paysannes.fr">semences@initiatives-paysannes.fr</a>
<br>
<i class="text-primary fa fa-phone mr-2"></i>
<a href="tel:+33977955678">09 77 95 56 78</a>
<hr>
<h4 class="text-orange">Changements de partiques vers l'agriculture paysanne</h4>
<i class="text-primary fa fa-envelope mr-2"></i>
<a href="mailto:agriculture@initiatives-paysannes.fr">agriculture@initiatives-paysannes.fr</a>
<br>
<i class="text-primary fa fa-phone mr-2"></i>
<a href="tel:+33921243154">09 21 24 31 54</a>
<hr>
<h4 class="text-cyan">Sensibilisation du public à l'agriculture paysanne</h4>
<i class="text-primary fa fa-envelope mr-2"></i>
<a href="mailto:evenements@initiatives-paysannes.fr">evenements@initiatives-paysannes.fr</a>
<br>
<i class="text-primary fa fa-phone mr-2"></i>
<a href="tel:+33977955678">09 77 95 56 78</a>
</div>
<div class="col-12 col-lg-6" >
<h4 class="text-cyan">Initiatives paysannes – Territoires Hauts de France est née en 2019 de la fusion de 4 associations</h4>
<img class="w-100" src="static/img/logo_fusion.png" alt="logos de Cedapas, Avenir, Copasol, Adearn"></img>
<hr>
<h4 class="text-secondary">Initiatives paysannes est membre des réseaux</h4>
<img class="w-100" src="static/img/logo_reseau.png" alt="logos de Fadear, Imppact, réseau semences paysannes, Reneta"></img>
<hr>
<h4 class="text-primary">Avec le soutien de</h4>
<img class="w-100" src="static/img/logo_financeurs.png" alt="logos de Interreg, ministère de l'agriculture, région Hauts de France, Départements Nord et Pas de Calais"></img>
</div>
</div>
</div>
</main>
</div>
<script src="{% minified "js/app.js" %}"></script>
</body>
</html>

52
package.json Normal file
Voir le fichier

@ -0,0 +1,52 @@
{
"name": "initiatives_paysannes",
"version": "0.1.0",
"description": "Placeholder",
"author": "Cliss XXI <tech@cliss21.com>",
"license": "AGPL-3.0+",
"scripts": {
"build": "gulp build",
"lint": "gulp lint",
"serve": "gulp serve",
"styleguide": "gulp serve:styleguide"
},
"dependencies": {
"bootstrap": "~4.3.1",
"fork-awesome": "^1.1.7",
"jquery": ">=3.0.0",
"open-sans-fonts": "^1.5.1",
"popper.js": "^1.14.4"
},
"devDependencies": {
"@babel/core": "^7.3.4",
"@babel/preset-env": "^7.3.4",
"babel-eslint": "^10.0.1",
"babel-loader": "^8.0.2",
"browser-sync": "^2.26.3",
"eslint": "^5.15.1",
"gulp": "^4.0.0",
"gulp-autoprefixer": "^6.0.0",
"gulp-babel": "^8.0.0",
"gulp-clean-css": "^4.0.0",
"gulp-cli": "^2.0.1",
"gulp-eslint": "^5.0.0",
"gulp-imagemin": "^5.0.3",
"gulp-load-plugins": "^1.1.0",
"gulp-rename": "^1.4.0",
"gulp-sass": "^4.0.2",
"gulp-sourcemaps": "^2.6.5",
"gulp-stylelint": "^8.0.0",
"gulp-terser": "^1.1.7",
"merge-stream": "^1.0.1",
"style-sherpa": "^1.0.0",
"stylelint": "^9.10.1",
"stylelint-config-recommended-scss": "^3.2.0",
"stylelint-config-standard": "^18.2.0",
"stylelint-order": "^2.1.0",
"stylelint-scss": "^3.5.4",
"vinyl-named": "^1.1.0",
"webpack": "^4.29.6",
"webpack-stream": "^5.2.1"
},
"private": true
}

112
styleguide/index.html Normal file
Voir le fichier

@ -0,0 +1,112 @@
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Initiatives Paysannes - Guide des styles</title>
<!-- Load Highlight.js CSS only. -->
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/github.min.css">
<link rel="stylesheet" href="/static/css/app.css">
<link rel="stylesheet" href="/static/css/fork-awesome.css">
<!-- Style guide-specific CSS. -->
<style>
/* Side menu with sections */
.sg-side-menu {
position: sticky;
top: 0;
margin-left: 1rem;
}
/* Individual sections of the style guide */
.ss-section:not(:last-child) {
padding-bottom: 4rem;
border-bottom: 2px solid #f8f9fa;
margin-bottom: 4rem;
}
/* Code blocks used for examples */
.ss-code pre {
margin-bottom: 0;
}
.ss-code code {
display: block;
padding: 1.5rem;
overflow-x: auto;
background-color: #f8f9fa;
}
/* Output of code blocks used for examples */
.ss-code-live {
padding: 1.5rem;
margin-bottom: 1.5rem;
border: 3px solid #f8f9fa;
}
</style>
</head>
<body>
<header class="jumbotron sg-header">
<div class="container">
<h1>Initiatives Paysannes<small class="text-muted"> : Guide des styles</small></h1>
<p class="lead">Ce guide des styles ne documente que les composants ou autres styles propres à l'application. Pour plus de détails sur l'utilisation du framework Bootstrap et de ses composants, consultez la documentation. Une page donne également un aperçu des composants principaux de Bootstrap mis en forme pour l'application.</p>
<hr class="my-4">
<a class="btn btn-primary btn-lg" href="https://getbootstrap.com/docs/" role="button">
<i class="fa fa-life-ring mr-2"></i>
Documentation de Bootstrap
</a>
<a class="btn btn-primary btn-lg" href="preview.html" role="button">
<i class="fa fa-eye mr-2"></i>
Aperçu des composants
</a>
</div>
</header>
<div class="container">
<div class="row">
<div class="col col-md-4 col-lg-3">
<ul class="nav flex-column sg-side-menu">
<li class="nav-item">
<a class="nav-link" href="#typographie">Typographie</a>
</li>
</ul>
</div>
<div class="col col-md-8 col-lg-9">
<section class="ss-section" id="typographie">
<h1>Typographie</h1><p class="lead">Cette application utilise la police d&#39;écriture <a href="#"><b>?</b></a>, sous licence ?.</p>
<hr>
<h2>Titres</h2><h1>Titre de niveau 1</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.</p>
<h2>Titre de niveau 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.</p>
<h3>Titre de niveau 3</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.</p>
<h4>Titre de niveau 4</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.</p>
<h5>Titre de niveau 5</h5>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.</p>
<h6>Titre de niveau 6</h6>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.</p>
</section>
</div>
</div>
</div>
<script src="/static/js/app.js"></script>
</body>
</html>

31
styleguide/index.md Normal file
Voir le fichier

@ -0,0 +1,31 @@
# Typographie
<p class="lead">Cette application utilise la police d'écriture <a href="#"><b>?</b></a>, sous licence ?.</p>
---
## Titres
<h1>Titre de niveau 1</h1>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.
<h2>Titre de niveau 2</h2>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.
<h3>Titre de niveau 3</h3>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.
<h4>Titre de niveau 4</h4>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.
<h5>Titre de niveau 5</h5>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.
<h6>Titre de niveau 6</h6>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic quibusdam ratione sunt dolorum, qui illo maxime doloremque accusantium cum libero eum, a optio odio placeat debitis ullam aut non distinctio.

1578
styleguide/preview.html Normal file

Fichier diff supprimé car celui-ci est trop grand Voir la Diff

95
styleguide/template.html Normal file
Voir le fichier

@ -0,0 +1,95 @@
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Initiatives Paysannes - Guide des styles</title>
<!-- Load Highlight.js CSS only. -->
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/github.min.css">
<link rel="stylesheet" href="/static/css/app.css">
<link rel="stylesheet" href="/static/css/fork-awesome.css">
<!-- Style guide-specific CSS. -->
<style>
/* Side menu with sections */
.sg-side-menu {
position: sticky;
top: 0;
margin-left: 1rem;
}
/* Individual sections of the style guide */
.ss-section:not(:last-child) {
padding-bottom: 4rem;
border-bottom: 2px solid #f8f9fa;
margin-bottom: 4rem;
}
/* Code blocks used for examples */
.ss-code pre {
margin-bottom: 0;
}
.ss-code code {
display: block;
padding: 1.5rem;
overflow-x: auto;
background-color: #f8f9fa;
}
/* Output of code blocks used for examples */
.ss-code-live {
padding: 1.5rem;
margin-bottom: 1.5rem;
border: 3px solid #f8f9fa;
}
</style>
</head>
<body>
<header class="jumbotron sg-header">
<div class="container">
<h1>Initiatives Paysannes<small class="text-muted"> : Guide des styles</small></h1>
<p class="lead">Ce guide des styles ne documente que les composants ou autres styles propres à l'application. Pour plus de détails sur l'utilisation du framework Bootstrap et de ses composants, consultez la documentation. Une page donne également un aperçu des composants principaux de Bootstrap mis en forme pour l'application.</p>
<hr class="my-4">
<a class="btn btn-primary btn-lg" href="https://getbootstrap.com/docs/" role="button">
<i class="fa fa-life-ring mr-2"></i>
Documentation de Bootstrap
</a>
<a class="btn btn-primary btn-lg" href="preview.html" role="button">
<i class="fa fa-eye mr-2"></i>
Aperçu des composants
</a>
</div>
</header>
<div class="container">
<div class="row">
<div class="col col-md-4 col-lg-3">
<ul class="nav flex-column sg-side-menu">
{{#each pages}}
<li class="nav-item">
<a class="nav-link" href="#{{ anchor }}">{{ title }}</a>
</li>
{{/each}}
</ul>
</div>
<div class="col col-md-8 col-lg-9">
{{#each pages}}
<section class="ss-section" id="{{ anchor }}">
{{ body }}
</section>
{{/each}}
</div>
</div>
</div>
<script src="/static/js/app.js"></script>
</body>
</html>