{"id":48482528,"url":"https://github.com/artslimedev/squish-journal","last_synced_at":"2026-04-07T08:34:06.260Z","repository":{"id":185441015,"uuid":"533215192","full_name":"artslimedev/squish-journal","owner":"artslimedev","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-31T04:21:38.000Z","size":199,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-31T06:02:34.079Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"EJS","has_issues":true,"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/artslimedev.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,"governance":null}},"created_at":"2022-09-06T07:43:21.000Z","updated_at":"2022-09-06T08:11:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"9a4d2e6b-0d56-473c-bcc8-d1dc6b154727","html_url":"https://github.com/artslimedev/squish-journal","commit_stats":null,"previous_names":["artslimedev/squish-journal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/artslimedev/squish-journal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artslimedev%2Fsquish-journal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artslimedev%2Fsquish-journal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artslimedev%2Fsquish-journal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artslimedev%2Fsquish-journal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artslimedev","download_url":"https://codeload.github.com/artslimedev/squish-journal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artslimedev%2Fsquish-journal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31506570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-04-07T08:34:06.192Z","updated_at":"2026-04-07T08:34:06.251Z","avatar_url":"https://github.com/artslimedev.png","language":"EJS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧠 Squish Mental Journal\n\n**Squish Journal** is a journal for the ones with the busiest, most hectic lives. It was made as a tool to decompress and spill your thoughts into a journal daily. It includes login/sign up and stores your entries in a secure database.\n\n🔗 **Live App**: [Squish](https://squish-production.up.railway.app/)\n\n\u003cimg src=\"public/images/app.png\" height=\"300\" alt=\"Squish App Screenshot\"\u003e \u003cimg src=\"public/images/app2.png\" height=\"300\" alt=\"Squish App Screenshot\"\u003e\n\n---\n\n## 🛠️ How It's Made\n\n## 🛠️ Technologies Used\n\n### Frontend\n\n- HTML\n- CSS\n- JavaScript\n- EJS (Embedded JavaScript Templates) – for server-side rendering\n\n### Backend\n\n- Node.js – JavaScript runtime environment\n- Express.js – Web framework for Node.js\n- MongoDB – NoSQL database for storing journal entries and user data\n- Mongoose – ODM (Object Data Modeling) library for MongoDB and Node.js\n\n### Authentication\n\n- Passport.js – Middleware for user authentication\n- bcrypt – Library for hashing passwords\n\n### Deployment\n\n- Railway – Cloud deployment platform\n\n---\n\nI really wanted to build a journal as a place for people to unwind and let go of things that have been stressing them. So with that in mind, I made sure the app would be accessible and simple enough for anyone to use. As a designer, I’m very particular about UX/UI—any app I build has to be beautiful and intuitive.\n\nThe first step was choosing a color palette. I did a deep dive into accessibility, especially for users who are color blind. I found that shades of blue and purple tend to be reliably perceived across various forms of color blindness, so I leaned into those and built the UI in Figma first.\n\nOnce I had my designs locked in, I coded the layouts in HTML \u0026 CSS and converted them into EJS for templating. I structured the backend with an MVC pattern—organizing models, views, controllers, and routes. Using Node.js and Express, I built out all my endpoints, implemented authentication with Passport, and connected everything to a MongoDB database using Mongoose.\n\n---\n\n## ✨ Features\n\n- User Authentication (Register/Login)\n- Secure session handling\n- Daily Journal Entries (Create, Read, Delete)\n- Beautiful, responsive design optimized for accessibility\n- Built with an MVC architecture for scalability\n- Production deployment using Railway\n\n---\n\n## 🔧 Optimizations\n\nThis was my first time using Figma to design a full app before writing any code—and it made a huge difference. Being able to interact with the UI beforehand helped me identify what would actually work and what needed rethinking. I also explored which design elements were practical to implement and which weren't, saving time in development.\n\n---\n\n## 📚 Lessons Learned\n\nThis is the most ambitious project I’d built at the time utilizing MVC architecture. I learned a lot about implementing authentication, setting up multiple routes, and managing connections to and from a database. It really solidified my understanding of the MVC architecture and gave me hands-on experience building a system where users can create private entries securely.\n\n---\n\n## 📁 Project Structure\n\n```\nsquish-journal/\n├── config/             # Configuration files (e.g., database, passport)\n├── controllers/        # Route handler functions\n├── images/             # Static image assets\n├── middleware/         # Custom middleware functions\n├── models/             # Mongoose models (User, Entry)\n├── public/             # Public assets (CSS, client-side JS)\n├── routes/             # Express route definitions\n├── utils/              # Utility functions\n├── views/              # EJS templates for rendering pages\n├── server.js           # Entry point of the application\n├── package.json        # Project metadata and dependencies\n└── README.md           # Project documentation\n```\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Node.js (v14 or higher)\n- MongoDB (local or Atlas)\n\n### Installation\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/artslimedev/squish-journal.git\n   cd squish-journal\n   ```\n\n2. **Install dependencies**\n\n   ```bash\n   npm install\n   ```\n\n3. **Set up environment variables**\n\n   Create a `.env` file in the root directory and add:\n\n   ```env\n   PORT=3000\n   MONGODB_URI=your_mongodb_connection_string\n   SESSION_SECRET=your_session_secret\n   ```\n\n4. **Start the development server**\n\n   ```bash\n   npm start\n   ```\n\n   Open your browser and go to: `http://localhost:3000`\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartslimedev%2Fsquish-journal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartslimedev%2Fsquish-journal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartslimedev%2Fsquish-journal/lists"}