All Projects → aloisdeniel → bluff

aloisdeniel / bluff

Licence: MIT license
A static website generator in Dart.

Programming Languages

dart
5743 projects

Projects that are alternatives of or similar to bluff

startover
Startover is a boilerplate for developing static websites. With Startover you don't have to start over!
Stars: ✭ 15 (-82.14%)
Mutual labels:  static-site
statiq-starter-kontent-lumen
Lumen is a minimal, lightweight, and mobile-first starter for creating blogs using Statiq and Kontent by Kentico.
Stars: ✭ 22 (-73.81%)
Mutual labels:  static-site
precompress
Generate pre-compressed .gz and .br files for static web servers
Stars: ✭ 27 (-67.86%)
Mutual labels:  static-site
danmallme
DanMall.me
Stars: ✭ 97 (+15.48%)
Mutual labels:  static-site
wp-trigger-netlify-build
A WordPress plugin to automatically rebuild a Netlify site when content is updated.
Stars: ✭ 80 (-4.76%)
Mutual labels:  static-site
nuxt-static
Generate a static site using Nuxt.js
Stars: ✭ 31 (-63.1%)
Mutual labels:  static-site
jodd-site
Jodd site and documentation in plain markdown.
Stars: ✭ 16 (-80.95%)
Mutual labels:  static-site
static-webpack-boilerplate
🚀 Minimal & Modern Webpack Boilerplate for building static sites
Stars: ✭ 40 (-52.38%)
Mutual labels:  static-site
haxeflixel.com
haxeflixel.com docpad source
Stars: ✭ 57 (-32.14%)
Mutual labels:  static-site
static-aws-deploy
A tool for deploying files to an AWS S3 bucket with configurable headers and invalidating AWS Cloudfront Objects.
Stars: ✭ 27 (-67.86%)
Mutual labels:  static-site
academia-hugo
Academia is a Hugo resume theme. You can showcase your academic resume, publications and talks using this theme.
Stars: ✭ 165 (+96.43%)
Mutual labels:  static-site
velox
The minimal PHP micro-framework.
Stars: ✭ 55 (-34.52%)
Mutual labels:  static-site
you-draw-it
Datenjournalismus: Nutzer können schätzen, wie sich Statistiken verändert haben und ihre Einschätzung danach überprüfen.
Stars: ✭ 24 (-71.43%)
Mutual labels:  static-site
zulip-archive
Zulip Archive viewer (statically generated HTML)
Stars: ✭ 13 (-84.52%)
Mutual labels:  static-site
11ta-template
Deeply customizable, full-featured, ready to publish blog template built with 11ty, TailwindCSS, & Alpine.js
Stars: ✭ 98 (+16.67%)
Mutual labels:  static-site
shikensu
Run a sequence of functions on in-memory representations of files.
Stars: ✭ 13 (-84.52%)
Mutual labels:  static-site
SAAS
🤣🔫Sicko Mode as a service
Stars: ✭ 21 (-75%)
Mutual labels:  static-site
tm-nextjs-starter
React + Nextjs + MobX starter
Stars: ✭ 49 (-41.67%)
Mutual labels:  static-site
pehapkari.cz-old
Website of Czech and Slovak PHP Community
Stars: ✭ 31 (-63.1%)
Mutual labels:  static-site
TokamakPublish
Use Tokamak in your Publish themes.
Stars: ✭ 19 (-77.38%)
Mutual labels:  static-site

Bluff

Diclaimer : I built this for my own needs, so don't expect it to be complete. It is a weekend hack, use at your own risk!

Bluff is a static website generator written in dart that is inspired by Flutter widgets.

Why ?

I started this project because I was tired of switching to a js environment everytime I need to write a small static website. I wanted the concept to be nearest of Flutter as possible, again, to keep the same way of developing user interfaces and not loosing time relearning paradigms again and again.

Why not using Flutter for web ?

Just because I wanted a really lightweight website with good SEOs. The migration to Flutter for web should be pretty simple though.

Usage

A simple usage example:

import 'package:bluff/bluff.dart';

Future main() async {
  final app = Application(
    availableSizes: [
      MediaSize.small,
      MediaSize.medium,
    ],
    supportedLocales: [
      Locale('fr', 'FR'),
      Locale('en', 'US'),
    ],
    routes: [
      homeRoute,
    ],
  );
  ;

  await publish(app);
}

final homeRoute = Route(
  title: (context) {
    final locale = Localizations.localeOf(context);
    if (locale.languageCode == 'fr') return 'Accueil';
    return 'Home';
  },
  relativeUrl: 'index',
  builder: (context) => Home(),
);

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final mediaQuery = MediaQuery.of(context);
    final theme = Theme.of(context);
    return Column(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: <Widget>[
        Flex(
          direction: mediaQuery.size == MediaSize.small
              ? Axis.vertical
              : Axis.horizontal,
          children: <Widget>[
            Expanded(
              child: Container(
                height: 300,
                decoration: BoxDecoration(
                  image: DecorationImage(
                    image: ImageProvider.asset('images/logo_dart_192px.svg'),
                  ),
                ),
              ),
            ),
            Padding(
              padding: EdgeInsets.all(20),
              child: Text('Hello world!'),
            ),
            Container(
              width: 200,
              height: 200,
              decoration: BoxDecoration(
                color: const Color(0xFF0000FF),
                borderRadius: BorderRadius.circular(5),
                boxShadow: [
                  BoxShadow(
                    color: const Color(0xAA0000FF),
                    blurRadius: 10,
                    offset: Offset(10, 10),
                  ),
                ],
              ),
            ),
            Image.asset(
              'images/logo_dart_192px.svg',
              fit: BoxFit.cover,
            ),
            Click(
              newTab: true,
              url: 'https://www.google.com',
              builder: (context, state) {
                return Container(
                  child: Text(
                    'Button',
                    style: theme.text.paragraph.merge(
                      TextStyle(
                        color: state == ClickState.hover
                            ? const Color(0xFFFFFFFF)
                            : const Color(0xFF0000FF),
                      ),
                    ),
                  ),
                  padding: EdgeInsets.all(20),
                  decoration: BoxDecoration(
                    color: state == ClickState.hover
                        ? const Color(0xFF0000FF)
                        : const Color(0x440000FF),
                    borderRadius: BorderRadius.circular(5),
                  ),
                );
              },
            )
          ],
        )
      ],
    );
  }
}
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].