Pen and I Publishing (www.penandipublishing.co.uk) is a UK-based platform designed to help individuals capture their life stories and memories through guided writing. The site focuses on making memoir writing accessible to everyone—not for publication, but for personal reflection, growth, and sharing with family.
The project is being developed in phases, with the first phase MVP now complete. This document outlines the current structure and planned development roadmap.
pen_and_i/
├── blog/ # Blog app
│ ├── admin.py # Admin configuration for blog posts
│ ├── models.py # Post and Category models
│ ├── serializers.py # API serializers
│ ├── templates/ # Blog templates
│ │ ├── category.html # Category listing page
│ │ ├── detail.html # Post detail page
│ │ └── list.html # Blog listing page
│ ├── urls.py # Blog URL patterns
│ └── views.py # Blog views
├── core/ # Core app
│ ├── templates/ # Core templates
│ │ ├── about.html # About page
│ │ ├── core/ # Core template partials
│ │ │ └── _messages.html # System messages component
│ │ ├── privacy_policy.html # Privacy policy page
│ │ └── terms.html # Terms and conditions page
│ ├── urls.py # Core URL patterns
│ └── views.py # Core views
├── pen/ # Main project directory
│ ├── asgi.py # ASGI configuration
│ ├── settings.py # Project settings
│ ├── urls.py # Main URL patterns
│ └── wsgi.py # WSGI configuration
├── prompt/ # Prompt generator app
│ ├── admin.py # Admin configuration
│ ├── models.py # Tag, PromptCategory, WritingPrompt models
│ ├── serializers.py # API serializers
│ ├── urls.py # Prompt URL patterns
│ └── views.py # Prompt views
├── static/ # Static files
│ ├── css/ # CSS files
│ ├── img/ # Image files
│ │ └── penandi.png # Site logo
│ └── js/ # JavaScript files
│ ├── category-filter.js # Filter functionality
│ ├── main.js # Main site functionality
│ └── prompt-generator.js # Prompt generator functionality
├── templates/ # Global templates
│ ├── base.html # Base template
│ ├── components/ # Reusable components
│ │ ├── footer.html # Site footer
│ │ └── nav.html # Site navigation
│ └── index.html # Homepage
├── manage.py # Django management script
└── requirements.txt # Project dependencies
- Random prompt generation based on filters
- Category, difficulty, and prompt type filtering
- Immediate display of prompts without page reload
- Mobile-responsive design
- Article categorization
- Publishing workflow with draft/published states
- Related posts and navigation between posts
- YouTube video embedding support
- SEO metadata fields for each post
- Responsive navigation
- About page explaining the site's purpose
- Amazon integration for notebook purchases
- Basic analytics tracking
- User registration and login functionality
- Secure authentication system
- User profile pages
- Ability to save and favorite prompts
- Personal prompt collection management
- Extend User model with profile information
- Create Favorites model to link users with prompts
- Implement session management
- Design profile dashboard interface
- Add appropriate permission checks to views
Memoir Writing Progress Tracker
-
Set personal writing goals
-
Track progress towards writing milestones
-
Gamification elements (badges, achievements)
-
Writing streak tracking
-
Optional sharing of milestones
AI-Powered Question Expander
- Allow users to enter basic memory prompts
- Generate thoughtful follow-up questions using AI
- Help users explore memories more deeply
- Implementation using Django and OpenAI API
- Backend: Django 5.1
- Database: MySQL
- Frontend: HTML, CSS (Tailwind CSS), JavaScript
- Deployment: Gunicorn, Whitenoise
- API: Django REST Framework
- Editor: Django Prose Editor for rich text
- Clone the repository
- Create a virtual environment:
python -m venv venv - Activate the virtual environment:
- Windows:
venv\Scripts\activate - Mac/Linux:
source venv/bin/activate
- Windows:
- Install dependencies:
pip install -r requirements.txt - Create a
.envfile with the following variables:SECRET_KEY=your-secret-key DATABASE_NAME=your-db-name DATABASE_USER=your-db-user DATABASE_PASSWORD=your-db-password DATABASE_HOST=localhost DATABASE_PORT=3306 - Run migrations:
python manage.py migrate - Create a superuser:
python manage.py createsuperuser - Load sample data:
python manage.py loaddata writing_prompts.json - Run the development server:
python manage.py runserver
Pen and I Publishing is currently under active development. If you'd like to contribute, please contact the project maintainer.
All rights reserved. This codebase is proprietary and confidential.
For any questions or feedback, please contact me - Diane Corriette - at https://www.djangify.com
