Minimalist tool for perfectionist screenwriters
I like writing and creating stories in my spare time. For the last few years I have been using plenty of online screenplay editors such as Celtx, WriterDuet or KitScenarist, each of these being more or less enjoyable. However, none of them met my criteria. I wanted a free, dead simple, but pretty screenplay editor.
My biggest inspiration is by far Amazon Story Writer, a very handy writing tool released by Amazon in 2015, which has unfortunately been shut down on June 30, 2019.
- Online and offline mode (yet to come)
- Export to PDF or .fountain format (more to come)
- Dark theme
- Screenplay statistics
- Scene navigation
- Character management
The workflow for deployment is entirely automated once a feature reaches the release branch.
The DATABASE_URL environment variable is automatically built depending on .env database variables.
- Trigger
.github\workflows\deploy.ymldocker compose build app- Installing dependencies
npm install - Generating Prisma files
npx prisma generate - Building app
npm run build
- Installing dependencies
- Image is pushed to registry
docker push ghcr.io/lycoon/scriptio-app:latest
- Copy
docker-compose.ymlto the server - Go in app path on the server
- Pull latest app image
docker compose pull app - Run the image
docker compose --profile prod up -d- Run
launch.shscript - Deploy up-to-date database migrations
npx prisma migrate deploy - Launch the app
npm start
- Run
- Pull latest app image
npm installnpm run devhttp://localhost:3000
The choice of following dependencies were the result of a long research and software design process as I wanted to use the best tools available for each task. I knew changing one of them afterwards would be a pain, so I had to be sure of the intended usage. I'm always open for better alternatives if you have any, feel free to open an issue in that case so we can discuss about it.
I spent quite some time figuring out the best library to generate PDF files that are not just huge rendered pictures. It was an absolutely necessary feature for me for the text to be selectable, as with any other text document. I finally found pdfmake, which allows to custom the document quite well but still needs some tricks to add text background color (as with scene headings).
| Name | Usage | Package |
|---|---|---|
| file-saver | Creating files when exporting non-PDF screenplays | |
| pdfmake | Generating PDF files when exporting screenplays |
Sending emails programmatically is a pain. I had to use a lot of different tools to get the job done. I chose AWS (SES) "Simple Email Service" as third-party service to send account validation and password recovery emails.
| Name | Usage | Package |
|---|---|---|
| hogan.js | Templating language for email generation | |
| inline-css | Used along with hogan.js for inlining CSS in email | |
| nodemailer | Sending emails from NodeJS |