Pigment is an experiment in programming language design. It's built on top of the incredible Epigram programming language.
The fundamental design consideration behind Pigment is cooperation. The programmer and the programming environment should both do the things that they're good at, to build programs together.
A few examples of things I think the computer is better at than me:
- telling whether a program is correct
- finding all the uses of a function or datatype
- refactoring
I'm sick of the hostile relationship I have with my compiler. It sits there silently while I do all the hard work. Then when I submit a program, most of the time it tells me I've made a mistake. Half the time it's done enough work to fix the program itself, but instead I get a cryptic error message.
This iteration of Pigment was born from a starter kit -- React Redux Universal Hot Example. From which it inherited the following technologies:
IsomorphicUniversal rendering- Both client and server make calls to load data from separate API server
- React
- React Router
- Express
- Babel for ES6 and ES7 magic
- Webpack for bundling
- Webpack Dev Server
- React Hot Loader
- Redux's futuristic Flux implementation
- Redux Dev Tools for next generation DX (developer experience). Watch Dan Abramov's talk.
- redux-form to manage form state in Redux
- lru-memoize to speed up form validation
- style-loader and sass-loader to allow import of stylesheets
- react-document-meta to manage title and meta tag information on both server and client
- webpack-isomorphic-tools to allow require() work for statics both on client and server
- mocha to allow writing unit tests for the project.
npm install
npm run dev
npm run build
npm run start
Pigment is MIT licensed.