• Stars
    star
    315
  • Rank 132,951 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 10 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

User Interface for the ClojureScript Compiler

Cuttle

NOTE: project discontinued

Cuttle is a standalone application that aims to be the simplest way to use ClojureScript. It provides a user-friendly interface, allowing you to build projects by clicking a button, and to see meaningful warnings and errors at a glance. In a way, it provides the "builder" parts of an IDE without making you leave your favorite editor.

Under the hood, Cuttle is not hiding a lot of magic from you. It uses standard ClojureScript workflow tools to perform its operations. It uses Leiningen with the lein-cljsbuild plugin listed in your project.clj, and the mies template for creating new projects. Thus, it should produce the same expected behavior as these standard tools.

Cuttle is itself a ClojureScript application :) (running on a Node/Chromium framework called Atom Shell). We hope this tool encourages you to explore building ClojureScript apps for the browser, Node, and other JS-targetted platforms.

Installation

Download Cuttle v1.1:

Windows Installer
Mac DMG
Linux zip

(Please make sure to install a JRE >= 7)

Homebrew Cask

$ brew install caskroom/cask/brew-cask
$ brew cask install cuttle

Homebrew-cask provides a friendly homebrew-style CLI workflow for the administration of Mac applications distributed as binaries.

It's implemented as a homebrew external command called cask.

User Guide

  • When first opening Cuttle, you will be prompted to add an existing project or to create a new one.
  • Add Existing Project: If you are adding an existing project, you must navigate the presented dialog to the project's project.clj file so that we can find your configured builds.
    • (We currently do not support cljsbuild configurations outside of the default :dev profile).
  • Add New Project: If you are creating a new project, you will be prompted for a name and location for its folder.
    • (The standard lein new mies template will be used to create the project.)
  • Build Table: Once you have loaded a project, you will be presented with a table of build configurations available for that project. Current status of the build, along with warnings and errors will be displayed here.
  • Build Button: At the top-right of the build table, you should see a build button. You can first select the dropdown arrow to specifically set which builds to compile and whether or not to automatically recompile when files change. Click the button proper to start building.
  • Multiple Projects: You can add multiple projects to this workspace. The projects are treated with isolated compiler instances and can be built in parallel.
  • Project Buttons: The project buttons at the top-left of the build table are also helpful for opening the project folder, re-fetching the build configs, and removing the project from the workspace.
  • Notifications: The settings link at the top-right of the page currently holds options for toggling compiler notifications
    • (via Mac native Notifications, Linux notify-send, or Growl For Windows).
  • Shutting Down: When closing the application, all compiler instances that happen to still be running are shutdown. Your configurations are saved and reloaded when re-opening the application.

Future

We welcome your ideas, bug reports, and pull requests!

With the ClojureScript tooling community rapidly growing, we hope to keep improving the user experience to integrate new workflows, while also keeping its behavior simple and predictable. Some ideas we are thinking about:

Development Setup

To setup a environment for building Cuttle:

  1. Install Leiningen and Node.js.

  2. One-time setup. Run from the project directory:

    # linux/mac
    scripts/setup.sh
    
    # windows
    scripts/setup.bat
  3. Compile LESS and ClojureScript:

    grunt fresh-build
  4. Launch to try it out:

    grunt launch
  5. Assemble a release for your OS:

    grunt release

About the Name/Logo

Cuttle is named after the Cuttlefish because Shaun likes cephalopods. The logo is modeled after its uniquely shaped eye.

The first three letters of Cuttle might stand for "ClojureScript User Tool", but the last three letters don't stand for anything because Cuttle is not an acronym.

Cuttle should be capitalized like a proper noun when used in a sentence.

License

All code licensed under the terms of the MIT License.

More Repositories

1

chessboardjs

JavaScript chessboard
JavaScript
1,919
star
2

atom-parinfer

Parinfer for Atom
Clojure
204
star
3

vscode-parinfer

Parinfer for VS Code
JavaScript
167
star
4

parinfer-elisp

Parinfer in Emacs Lisp
Emacs Lisp
97
star
5

chessboard2

chessboard.js v2
Clojure
85
star
6

autocompletejs

AutoCompleteJS Widget
JavaScript
72
star
7

cljs-cheatsheet

a ClojureScript Cheatsheet
Clojure
67
star
8

sublime-text-parinfer

Parinfer plugin for Sublime Text
Python
57
star
9

parinfer-viml

Parinfer in Vimscript
Vim Script
51
star
10

tree-sitter-clojure

Clojure / ClojureScript grammar for tree-sitter
C
32
star
11

record-linking-talk

Slides + code for my talk on Record Linking at Clojure/conj 2019
JavaScript
30
star
12

standard-clojure-style-js

Standard Clojure Style in JavaScript
Clojure
26
star
13

cljs-logo

ClojureScript logo
22
star
14

tourney-bot

an app to run the Houston Ultimate Indoor Tournament
Clojure
18
star
15

kidif.js

Store raw text as structured data in simple text files.
JavaScript
17
star
16

parinfer-lua

Parinfer core algorithm in Lua
Lua
16
star
17

snowflake-css

Snowflake CSS - simplify your CSS with globally unique selectors
Clojure
13
star
18

humble-animations

Animations using HumbleUI
Clojure
12
star
19

parinfer-jvm

Parinfer on the JVM
Kotlin
12
star
20

sublime-pretty-edn

Format, Validate, Minify EDN files in Sublime Text
Python
9
star
21

parinfer.py

Parinfer in Python
Python
9
star
22

flex-class-capstone-project-requirements

Capstone Project Requirements for DigitalCrafts Flex Class Houston
7
star
23

phase3-react-project-requirements

Phase 3 React Project Requirements for DigitalCrafts Flex coding bootcamp
6
star
24

teaching-resources

List of Teaching Resources
5
star
25

phase2-backend-project-requirements

Phase 2 Backend Project Requirements for DigitalCrafts Flex coding bootcamp
5
star
26

clojurescript-radio

Implementing a radio using ClojureScript and React
CSS
5
star
27

humble-mondrian

Piet Mondrian painting in HumbleUI
Clojure
4
star
28

phase1-final-project-requirements

Final Project Requirements for Phase 1 - DigitalCrafts Flex coding bootcamp
4
star
29

flexbox-layout-exercises

CSS Layout Exercises using Flexbox
4
star
30

Professional-JavaScript

Talk on JavaScript to the Houston.js group for March 2012
JavaScript
4
star
31

cljs101

Beginning Exercises for a ClojureScript Programmer
Clojure
3
star
32

professional-clojurescript-curriculum

Curriculum and Lesson Outlines for Professional ClojureScript Course
3
star
33

jquery-login-form

Create a login form using jQuery and AJAX
JavaScript
3
star
34

object-oriented-calculator

Create a JavaScript calculator widget in a object-oriented fashion
JavaScript
3
star
35

js201

JavaScript Exercises for beginners
JavaScript
3
star
36

react-concepts

Some examples to help teach the concepts behind React.js
JavaScript
3
star
37

open-ideas

a Place to Store Ideas
2
star
38

hat-tourney-builder

UI for sorting players for an Ultimate Hat Tournament (random teams)
HTML
2
star
39

clojurescript-for-javascript-developers

2
star
40

Introducing-AutoCompleteJS

talk for the Houston JS group 26 March 2013
JavaScript
2
star
41

js101

js101 Exercises
JavaScript
2
star
42

humble-modal-example

Example Modal component using HumbleUI
Clojure
2
star
43

react-state-examples

Teach some common state management patterns using React
Clojure
2
star
44

calculate-tournament-results

A programming puzzle using higher-order functions.
JavaScript
2
star
45

Pidgin-Plugin-block-user-has-left-the-conversation

simple pidgin plugin to block the <user> has left the conversation system messages.
C
2
star
46

intro-to-ajax

Introduction to AJAX Programming
JavaScript
2
star
47

re-frame-talk

Slides and code for my talk about using Re-Frame and ClojureScript - Houston Functional Meetup, March 2019
Clojure
2
star
48

shipping-packages-puzzle

Shipping Packages Logic Puzzle (programming exercise)
2
star
49

mori-react-example

An example of using Mori.js with React.js
JavaScript
1
star
50

rice-talk

talk to Rice CS undergrads, Jan 2014
1
star
51

flex-class-2018-02

Live Code from lectures for the Digital Crafts Flex Class 2018-02
JavaScript
1
star
52

professional-javascript-short

Short version of Professional JavaScript talk (originally for Houston Techfest 2013)
JavaScript
1
star
53

connect-four

Connect Four assignment
JavaScript
1
star
54

tourney-nerd

library to handle Ultimate tournament logic
Clojure
1
star
55

why-cljs

slides for Why ClojureScript? talk, March 2014
CSS
1
star
56

threading-macros.info

Clojure threading macros animations
CSS
1
star
57

JavaScript-Patterns

1
star
58

usb-file-sorter

Sort files on a USB drive
JavaScript
1
star
59

houstonbudget.info

Visualization of the Houston Budget
JavaScript
1
star
60

headmaster

Coding Bootcamp Classroom Tracking System
JavaScript
1
star
61

cljs-color-clock

Color Clock Assignment using ClojureScript
Clojure
1
star
62

example-build-system

An example build system for a simple website.
JavaScript
1
star
63

clojurescript-tic-tac-toe

Tic-Tac-Toe implemented in ClojureScript. Used as a teaching exercise for the Professional ClojureScript course (https://cljs.pro)
HTML
1
star
64

color-clock

JavaScript
1
star
65

example-tic-tac-toe

Example Tic Tac Toe Game
JavaScript
1
star
66

re-frame-project-skeleton

create a project skeleton for a re-frame application
Clojure
1
star
67

parinfer-annotations

Parinfer annotation helper library
JavaScript
1
star
68

basic-express-with-knex

JavaScript
1
star
69

Pidgin-Plugin--Block-AOL-System-Msg

Simple plugin to block messages from "AOL System Msg" in Pidgin.
C
1
star
70

js201-continued

JavaScript Exercises for beginners (part 2)
JavaScript
1
star