{"id":21006282,"url":"https://github.com/derlin/450words","last_synced_at":"2026-02-13T09:17:20.721Z","repository":{"id":34478973,"uuid":"38417175","full_name":"derlin/450words","owner":"derlin","description":"A little website to help people writing ~2 pages per day.","archived":false,"fork":false,"pushed_at":"2022-11-17T16:45:35.000Z","size":120,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T07:39:16.111Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/derlin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-02T07:09:58.000Z","updated_at":"2024-06-22T02:43:48.000Z","dependencies_parsed_at":"2022-09-14T09:00:58.005Z","dependency_job_id":null,"html_url":"https://github.com/derlin/450words","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/derlin/450words","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derlin%2F450words","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derlin%2F450words/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derlin%2F450words/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derlin%2F450words/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/derlin","download_url":"https://codeload.github.com/derlin/450words/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derlin%2F450words/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276977664,"owners_count":25738955,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-25T02:00:09.612Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T08:50:29.854Z","updated_at":"2025-09-25T20:43:35.202Z","avatar_url":"https://github.com/derlin.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 450 words\n\n## A little backstory: 750 words\n\nA few years ago, I stumbled upon [750words](http://750words.com/), a great website with a simple idea. With their own words:\n\n\u003e It's about learning a new habit: Writing. Every. Day.\n\nIn fact, this site is just a numeric support for what is called _morning pages_: \n\n\u003e Morning Pages are three pages of longhand, stream of consciousness writing,\ndone first thing in the morning. *There is no wrong way to do Morning Pages*–\nthey are not high art. They are not even “writing.” They are about\nanything and everything that crosses your mind– and they are for your eyes\nonly. \n\u003e Morning Pages provoke, clarify, comfort, cajole, prioritize and\nsynchronize the day at hand. Do not over-think Morning Pages: just put\nthree pages of anything on the page...and then do three more pages tomorrow.\n\nSo, As I said, I stumbled upon the site and instantly fell in love with it: writing 750 words a day is difficult at first, but the more you practice the easier it gets. My only sorrow: while _they do not tell you this at first_, you only get one month free. Afterwards, you need to pay __$5/month__ to keep writing. It might be cheap, but I really didn't like the surprise... So I decided to make my own !\n\n## What 450words is all about\n\n__450words__ is a local (and stripped) version of 750words. It allows you to write your morning pages easily from your browser. You can either deploy it on a server or on your local machine, so you have full control over your data.\n\nAlso, you noticed that I downgraded from 750 to 450 words. Why ? Because 3 pages are hard to achieve when you don't have much going on in your life... I often had a hard time getting the green dot, so I decided to target a smaller amount of words. Of course, you are free to go above this limit if you want.\n\n## Screenshots\n\nCurrent day page, ready for your thoughts: \n\n![screenshot 1: index](http://i.imgur.com/md9z7Rf.png)\n\nBrowsing history:\n\n![screenshot 2: history](http://i.imgur.com/Rju5szc.png)\n\n## Requirements \n\nThe only thing you need is an Apache-PHP-MySQL instance or Docker, some storage space and a bit of motivation to get started.\n\n## Installation\n\n__Using a local Apache/PHP/MySQL setup__\n\nHere, you need an Apache server with PHP and MySQL enabled and a MySQL database. Google is your friend if you don't already have it.\n\n1. clone this repository and copy the `src` directory in `/var/www` (or your local apache folder).\n2. edit `apache2/site-enabled/default-000.conf` and add a virtual host entry (see `docker/apache-config.conf` for an example)\n3. create a `words` database in your MySQL instance. You can use the script in `docker/db-init-words-db.sql`:\n        \n        $ mysql\n        \u003e create database words;\n        \u003e exit\n        \n        $ mysqldump -u user -p words \u003c docker/db-init/words-db.sql\n\n4. edit `src/utls/db.php` and replace the lines \n\n        $dbhost = getenv('MYSQL_URL');\n        $dbuser = getenv('MYSQL_USERNAME');\n        $dbpass = getenv('MYSQL_PASSWORD');\n\n    with informations about your mysql instance. For example:\n\n        $dbhost = 'localhost';\n        $dbuser = '450words-user';\n        $dbpass = 'secure-password';\n\n\n5. restart your apache server. You should be all set !\n\n__Using Docker__\n\n1. `cd` into `docker`: `cd docker`\n2. launch 450words: `docker-compose up -d`\n3. navigate to http://localhost and ensure it is working\n4. stop the container: `docker-compose stop`\n\nTo create a user, navigate to http://localhost/signup.php. You are all set !\n\nNote that the mysql database is persisted in `docker/db-data` (a _volume_, see the `docker-compose.yaml` file), so you won't lose your data when you stop docker.\n\n_Dump the content of the database_: to backup your database content using Docker, first ensure the mysql container is running (`\ndocker-compose up`\n), then type:\n\n        docker exec -it docker_db_1 mysqldump -u docker --password=docker words \u003e words.sql \n\n## Note to self\n\nFor my future self: the data from 2015 are stored on Google Drive, under *_Writings* (both markdown and sql - the latter can be put in the db-init folder).\n\n--------------------- \n_Lucy Linder, summer 2015_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderlin%2F450words","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderlin%2F450words","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderlin%2F450words/lists"}