opaque_id 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +28 -0
- data/CODE_OF_CONDUCT.md +11 -11
- data/README.md +82 -0
- data/docs/.gitignore +5 -0
- data/docs/404.html +25 -0
- data/docs/Gemfile +31 -0
- data/docs/Gemfile.lock +335 -0
- data/docs/_config.yml +162 -0
- data/docs/_data/navigation.yml +132 -0
- data/docs/_includes/footer_custom.html +8 -0
- data/docs/_includes/head_custom.html +67 -0
- data/docs/algorithms.md +409 -0
- data/docs/alphabets.md +521 -0
- data/docs/api-reference.md +594 -0
- data/docs/assets/css/custom.scss +798 -0
- data/docs/assets/images/favicon.svg +17 -0
- data/docs/assets/images/og-image.svg +65 -0
- data/docs/configuration.md +548 -0
- data/docs/development.md +567 -0
- data/docs/getting-started.md +256 -0
- data/docs/index.md +132 -0
- data/docs/installation.md +377 -0
- data/docs/performance.md +488 -0
- data/docs/robots.txt +11 -0
- data/docs/security.md +598 -0
- data/docs/usage.md +414 -0
- data/docs/use-cases.md +569 -0
- data/lib/opaque_id/version.rb +1 -1
- data/tasks/0003-prd-documentation-site.md +191 -0
- data/tasks/tasks-0003-prd-documentation-site.md +84 -0
- metadata +27 -2
- data/sig/opaque_id.rbs +0 -4
@@ -0,0 +1,191 @@
|
|
1
|
+
# Product Requirements Document: OpaqueId Documentation Site
|
2
|
+
|
3
|
+
## Introduction/Overview
|
4
|
+
|
5
|
+
Create a professional documentation website for the OpaqueId Ruby gem using [Just the Docs](https://just-the-docs.com) Jekyll theme. The site will provide comprehensive, developer-focused documentation that mirrors the README content but with improved navigation, search capabilities, and a clean, minimal design similar to the Just the Docs site itself.
|
6
|
+
|
7
|
+
**Problem Solved:** The current README is comprehensive but long (1600+ lines), making it difficult to navigate and find specific information quickly. A dedicated documentation site will improve developer experience and make the gem more accessible.
|
8
|
+
|
9
|
+
**Goal:** Create a professional, searchable documentation site that makes OpaqueId easy to understand and implement for developers.
|
10
|
+
|
11
|
+
## Goals
|
12
|
+
|
13
|
+
1. **Improve Developer Experience**: Provide easy navigation and search for finding specific documentation
|
14
|
+
2. **Professional Presentation**: Create a polished, modern documentation site that reflects the quality of the gem
|
15
|
+
3. **Maintain Content Quality**: Preserve all valuable information from the README while improving organization
|
16
|
+
4. **Enable Auto-Deployment**: Set up GitHub Actions for automatic deployment on successful pushes
|
17
|
+
5. **Ensure Accessibility**: Make documentation accessible and mobile-friendly
|
18
|
+
6. **Minimize Maintenance**: Keep the site simple and maintainable
|
19
|
+
|
20
|
+
## User Stories
|
21
|
+
|
22
|
+
- **As a developer** evaluating OpaqueId, I want to quickly understand what the gem does and how to install it
|
23
|
+
- **As a developer** implementing OpaqueId, I want to find specific configuration options and usage examples
|
24
|
+
- **As a developer** troubleshooting issues, I want to search for specific error messages or solutions
|
25
|
+
- **As a developer** learning advanced features, I want to explore performance benchmarks and security considerations
|
26
|
+
- **As a developer** contributing to the project, I want to understand the development setup and guidelines
|
27
|
+
|
28
|
+
## Functional Requirements
|
29
|
+
|
30
|
+
### 1. Site Structure & Navigation
|
31
|
+
|
32
|
+
1.1. Create a `/docs` directory with Jekyll site structure
|
33
|
+
1.2. Implement sidebar navigation based on README Table of Contents
|
34
|
+
1.3. Use minimal, flat navigation structure (no collapsible sections)
|
35
|
+
1.4. Include search functionality using Just the Docs built-in search
|
36
|
+
1.5. Add "Getting Started" quick start guide as a separate page
|
37
|
+
|
38
|
+
### 2. Content Organization
|
39
|
+
|
40
|
+
2.1. Convert README sections into individual documentation pages
|
41
|
+
2.2. Create logical page hierarchy: Home → Getting Started → Installation → Usage → Configuration → etc.
|
42
|
+
2.3. Maintain all existing content from README
|
43
|
+
2.4. Add code syntax highlighting for Ruby examples
|
44
|
+
2.5. Include proper cross-references between pages
|
45
|
+
|
46
|
+
### 3. Design & Styling
|
47
|
+
|
48
|
+
3.1. Use Just the Docs theme with default light/dark mode switching
|
49
|
+
3.2. Apply minimal design similar to just-the-docs.com
|
50
|
+
3.3. Include OpaqueId branding and gem badges
|
51
|
+
3.4. Ensure responsive design for mobile devices
|
52
|
+
3.5. Use consistent typography and spacing
|
53
|
+
|
54
|
+
### 4. GitHub Pages Integration
|
55
|
+
|
56
|
+
4.1. Configure site for `https://nyaggah.github.io/opaque_id`
|
57
|
+
4.2. Set up GitHub Actions workflow for automatic deployment
|
58
|
+
4.3. Deploy on successful pushes to main branch
|
59
|
+
4.4. Include proper Jekyll configuration for GitHub Pages
|
60
|
+
|
61
|
+
### 5. Content Pages
|
62
|
+
|
63
|
+
5.1. **Home**: Overview, badges, quick introduction
|
64
|
+
5.2. **Getting Started**: Step-by-step installation and basic usage
|
65
|
+
5.3. **Installation**: Detailed installation instructions and requirements
|
66
|
+
5.4. **Usage**: Standalone and ActiveRecord integration examples
|
67
|
+
5.5. **Configuration**: All configuration options and examples
|
68
|
+
5.6. **Alphabets**: Built-in alphabets and custom alphabet guide
|
69
|
+
5.7. **Algorithms**: Technical details about fast path and unbiased algorithms
|
70
|
+
5.8. **Performance**: Benchmarks and optimization tips
|
71
|
+
5.9. **Security**: Security considerations and best practices
|
72
|
+
5.10. **Use Cases**: Real-world examples and applications
|
73
|
+
5.11. **Development**: Contributing guidelines and development setup
|
74
|
+
5.12. **API Reference**: Complete method documentation
|
75
|
+
|
76
|
+
### 6. Technical Implementation
|
77
|
+
|
78
|
+
6.1. Use Jekyll with Just the Docs theme
|
79
|
+
6.2. Configure `_config.yml` for GitHub Pages
|
80
|
+
6.3. Set up proper front matter for all pages
|
81
|
+
6.4. Include necessary Jekyll plugins for GitHub Pages
|
82
|
+
6.5. Optimize for fast loading and SEO
|
83
|
+
|
84
|
+
## Non-Goals (Out of Scope)
|
85
|
+
|
86
|
+
- **Live Code Examples**: No interactive demos or live code execution
|
87
|
+
- **Version-Specific Documentation**: Single version documentation only
|
88
|
+
- **Automatic README Sync**: Manual content maintenance
|
89
|
+
- **Custom Domain**: Using default GitHub.io domain
|
90
|
+
- **Breadcrumb Navigation**: Sidebar navigation only
|
91
|
+
- **User Authentication**: Public documentation only
|
92
|
+
- **Comments/Feedback System**: Static documentation only
|
93
|
+
|
94
|
+
## Design Considerations
|
95
|
+
|
96
|
+
### Visual Design
|
97
|
+
|
98
|
+
- **Theme**: [Just the Docs](https://just-the-docs.com) Jekyll theme
|
99
|
+
- **Color Scheme**: Default light/dark mode switching
|
100
|
+
- **Layout**: Clean, minimal design with focus on content
|
101
|
+
- **Typography**: Clear, readable fonts with proper hierarchy
|
102
|
+
- **Navigation**: Left sidebar with flat structure
|
103
|
+
|
104
|
+
### Content Structure
|
105
|
+
|
106
|
+
- **Homepage**: Hero section with badges, overview, and quick start
|
107
|
+
- **Sidebar**: Logical grouping of documentation sections
|
108
|
+
- **Search**: Full-text search across all documentation
|
109
|
+
- **Code Examples**: Syntax-highlighted Ruby code blocks
|
110
|
+
- **Cross-References**: Links between related sections
|
111
|
+
|
112
|
+
## Technical Considerations
|
113
|
+
|
114
|
+
### Jekyll Configuration
|
115
|
+
|
116
|
+
- Use gem-based approach with `just-the-docs` gem
|
117
|
+
- Configure for GitHub Pages compatibility
|
118
|
+
- Include necessary plugins: jekyll-feed, jekyll-sitemap, jekyll-seo-tag
|
119
|
+
- Set up proper permalinks and URL structure
|
120
|
+
|
121
|
+
### GitHub Actions Workflow
|
122
|
+
|
123
|
+
- Trigger on pushes to main branch
|
124
|
+
- Build Jekyll site
|
125
|
+
- Deploy to GitHub Pages
|
126
|
+
- Include proper error handling and notifications
|
127
|
+
|
128
|
+
### File Structure
|
129
|
+
|
130
|
+
```
|
131
|
+
/docs/
|
132
|
+
├── _config.yml
|
133
|
+
├── Gemfile
|
134
|
+
├── index.md (Home)
|
135
|
+
├── getting-started.md
|
136
|
+
├── installation.md
|
137
|
+
├── usage.md
|
138
|
+
├── configuration.md
|
139
|
+
├── alphabets.md
|
140
|
+
├── algorithms.md
|
141
|
+
├── performance.md
|
142
|
+
├── security.md
|
143
|
+
├── use-cases.md
|
144
|
+
├── development.md
|
145
|
+
├── api-reference.md
|
146
|
+
└── assets/
|
147
|
+
└── images/
|
148
|
+
```
|
149
|
+
|
150
|
+
## Success Metrics
|
151
|
+
|
152
|
+
1. **Developer Adoption**: Increased gem downloads and usage
|
153
|
+
2. **User Engagement**: Time spent on documentation pages
|
154
|
+
3. **Search Usage**: Frequency of search functionality usage
|
155
|
+
4. **Page Performance**: Fast loading times (< 3 seconds)
|
156
|
+
5. **Mobile Usage**: Successful mobile documentation access
|
157
|
+
6. **SEO Performance**: High search engine rankings for OpaqueId-related queries
|
158
|
+
|
159
|
+
## Open Questions
|
160
|
+
|
161
|
+
1. Should we include a changelog page or link to GitHub releases?
|
162
|
+
2. Do we want to include a "Troubleshooting" section for common issues?
|
163
|
+
3. Should we add a "Migration Guide" for users switching from nanoid.rb?
|
164
|
+
4. Do we want to include performance comparison charts or keep them as tables?
|
165
|
+
5. Should we add a "Community" section with links to discussions and support?
|
166
|
+
|
167
|
+
## Implementation Priority
|
168
|
+
|
169
|
+
### Phase 1: Core Setup
|
170
|
+
|
171
|
+
- Set up Jekyll site structure
|
172
|
+
- Configure GitHub Pages deployment
|
173
|
+
- Create basic page structure
|
174
|
+
|
175
|
+
### Phase 2: Content Migration
|
176
|
+
|
177
|
+
- Convert README content to individual pages
|
178
|
+
- Set up navigation and cross-references
|
179
|
+
- Add code syntax highlighting
|
180
|
+
|
181
|
+
### Phase 3: Enhancement
|
182
|
+
|
183
|
+
- Add search functionality
|
184
|
+
- Optimize performance and SEO
|
185
|
+
- Polish design and user experience
|
186
|
+
|
187
|
+
### Phase 4: Launch
|
188
|
+
|
189
|
+
- Deploy to GitHub Pages
|
190
|
+
- Test all functionality
|
191
|
+
- Announce to community
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# Task List: OpaqueId Documentation Site
|
2
|
+
|
3
|
+
## Relevant Files
|
4
|
+
|
5
|
+
- `docs/_config.yml` - Jekyll configuration file for the documentation site
|
6
|
+
- `docs/Gemfile` - Ruby dependencies for Jekyll and Just the Docs theme
|
7
|
+
- `docs/index.md` - Homepage of the documentation site
|
8
|
+
- `docs/getting-started.md` - Quick start guide for developers
|
9
|
+
- `docs/installation.md` - Detailed installation instructions
|
10
|
+
- `docs/usage.md` - Usage examples and integration guides
|
11
|
+
- `docs/configuration.md` - Configuration options and examples
|
12
|
+
- `docs/alphabets.md` - Built-in alphabets and custom alphabet guide
|
13
|
+
- `docs/algorithms.md` - Technical details about algorithms
|
14
|
+
- `docs/performance.md` - Performance benchmarks and optimization
|
15
|
+
- `docs/security.md` - Security considerations and best practices
|
16
|
+
- `docs/use-cases.md` - Real-world examples and applications
|
17
|
+
- `docs/development.md` - Contributing guidelines and development setup
|
18
|
+
- `docs/api-reference.md` - Complete API documentation
|
19
|
+
- `docs/assets/images/` - Directory for documentation images and assets
|
20
|
+
- `.github/workflows/docs.yml` - GitHub Actions workflow for documentation deployment
|
21
|
+
- `README.md` - Source content for documentation migration
|
22
|
+
|
23
|
+
### Notes
|
24
|
+
|
25
|
+
- The documentation site will be completely separate from the main gem codebase
|
26
|
+
- Jekyll uses Markdown files with YAML front matter for page configuration
|
27
|
+
- GitHub Pages will automatically build and deploy the Jekyll site
|
28
|
+
- All content will be manually migrated from the existing README.md
|
29
|
+
|
30
|
+
## Tasks
|
31
|
+
|
32
|
+
- [x] 1.0 Set up Jekyll site structure and configuration
|
33
|
+
|
34
|
+
- [x] 1.1 Create `/docs` directory structure
|
35
|
+
- [x] 1.2 Initialize Jekyll site with `jekyll new docs --force`
|
36
|
+
- [x] 1.3 Configure `_config.yml` for Just the Docs theme and GitHub Pages
|
37
|
+
- [x] 1.4 Set up `Gemfile` with just-the-docs gem and GitHub Pages plugins
|
38
|
+
- [x] 1.5 Configure site metadata (title, description, author, URL)
|
39
|
+
- [x] 1.6 Set up proper permalinks and URL structure
|
40
|
+
- [x] 1.7 Configure search functionality and navigation settings
|
41
|
+
|
42
|
+
- [x] 2.0 Create GitHub Actions workflow for documentation deployment
|
43
|
+
|
44
|
+
- [x] 2.1 Create `.github/workflows/docs.yml` workflow file
|
45
|
+
- [x] 2.2 Configure workflow to trigger on pushes to main branch
|
46
|
+
- [x] 2.3 Set up Jekyll build process with proper Ruby version
|
47
|
+
- [x] 2.4 Configure GitHub Pages deployment with proper permissions
|
48
|
+
- [x] 2.5 Add error handling and build status notifications
|
49
|
+
- [x] 2.6 Test workflow with initial deployment
|
50
|
+
|
51
|
+
- [x] 3.0 Migrate and organize content from README into documentation pages
|
52
|
+
|
53
|
+
- [x] 3.1 Create homepage (`index.md`) with overview, badges, and introduction
|
54
|
+
- [x] 3.2 Extract and create getting-started.md with quick start guide
|
55
|
+
- [x] 3.3 Migrate installation content to installation.md with all methods
|
56
|
+
- [x] 3.4 Create usage.md with standalone and ActiveRecord examples
|
57
|
+
- [x] 3.5 Extract configuration options to configuration.md with examples
|
58
|
+
- [x] 3.6 Create alphabets.md with built-in alphabets and custom guide
|
59
|
+
- [x] 3.7 Migrate algorithm details to algorithms.md with technical explanations
|
60
|
+
- [x] 3.8 Create performance.md with benchmarks and optimization tips
|
61
|
+
- [x] 3.9 Extract security content to security.md with best practices
|
62
|
+
- [x] 3.10 Create use-cases.md with real-world examples and applications
|
63
|
+
- [x] 3.11 Migrate development content to development.md with setup instructions
|
64
|
+
- [x] 3.12 Create api-reference.md with complete method documentation
|
65
|
+
|
66
|
+
- [x] 4.0 Implement navigation structure and cross-references
|
67
|
+
|
68
|
+
- [x] 4.1 Configure navigation in `_config.yml` with proper page ordering
|
69
|
+
- [x] 4.2 Add proper YAML front matter to all pages with titles and descriptions
|
70
|
+
- [x] 4.3 Create cross-references between related pages using markdown links
|
71
|
+
- [x] 4.4 Add table of contents to longer pages using Just the Docs features
|
72
|
+
- [x] 4.5 Implement proper heading hierarchy for consistent navigation
|
73
|
+
- [x] 4.6 Add breadcrumb navigation where appropriate
|
74
|
+
- [x] 4.7 Test navigation flow and ensure all links work correctly
|
75
|
+
|
76
|
+
- [x] 5.0 Configure Just the Docs theme and optimize for GitHub Pages
|
77
|
+
- [x] 5.1 Customize theme colors and branding to match OpaqueId
|
78
|
+
- [x] 5.2 Configure code syntax highlighting for Ruby examples
|
79
|
+
- [x] 5.3 Set up responsive design and mobile optimization
|
80
|
+
- [x] 5.4 Add SEO meta tags and Open Graph properties
|
81
|
+
- [x] 5.5 Configure sitemap and RSS feed generation
|
82
|
+
- [x] 5.6 Optimize page loading speed and performance
|
83
|
+
- [x] 5.7 Test site functionality across different browsers and devices
|
84
|
+
- [x] 5.8 Validate HTML and accessibility compliance
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opaque_id
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Nyaggah
|
@@ -126,19 +126,44 @@ files:
|
|
126
126
|
- LICENSE.txt
|
127
127
|
- README.md
|
128
128
|
- Rakefile
|
129
|
+
- docs/.gitignore
|
130
|
+
- docs/404.html
|
131
|
+
- docs/Gemfile
|
132
|
+
- docs/Gemfile.lock
|
133
|
+
- docs/_config.yml
|
134
|
+
- docs/_data/navigation.yml
|
135
|
+
- docs/_includes/footer_custom.html
|
136
|
+
- docs/_includes/head_custom.html
|
137
|
+
- docs/algorithms.md
|
138
|
+
- docs/alphabets.md
|
139
|
+
- docs/api-reference.md
|
140
|
+
- docs/assets/css/custom.scss
|
141
|
+
- docs/assets/images/favicon.svg
|
142
|
+
- docs/assets/images/og-image.svg
|
143
|
+
- docs/configuration.md
|
144
|
+
- docs/development.md
|
145
|
+
- docs/getting-started.md
|
146
|
+
- docs/index.md
|
147
|
+
- docs/installation.md
|
148
|
+
- docs/performance.md
|
149
|
+
- docs/robots.txt
|
150
|
+
- docs/security.md
|
151
|
+
- docs/usage.md
|
152
|
+
- docs/use-cases.md
|
129
153
|
- lib/generators/opaque_id/install_generator.rb
|
130
154
|
- lib/generators/opaque_id/templates/migration.rb.tt
|
131
155
|
- lib/opaque_id.rb
|
132
156
|
- lib/opaque_id/model.rb
|
133
157
|
- lib/opaque_id/version.rb
|
134
158
|
- release-please-config.json
|
135
|
-
- sig/opaque_id.rbs
|
136
159
|
- tasks/0001-prd-opaque-id-gem.md
|
137
160
|
- tasks/0002-prd-publishing-release-automation.md
|
161
|
+
- tasks/0003-prd-documentation-site.md
|
138
162
|
- tasks/references/opaque_gem_requirements.md
|
139
163
|
- tasks/references/original_identifiable_concern_and_nanoid.md
|
140
164
|
- tasks/tasks-0001-prd-opaque-id-gem.md
|
141
165
|
- tasks/tasks-0002-prd-publishing-release-automation.md
|
166
|
+
- tasks/tasks-0003-prd-documentation-site.md
|
142
167
|
homepage: https://github.com/nyaggah/opaque_id
|
143
168
|
licenses:
|
144
169
|
- MIT
|
data/sig/opaque_id.rbs
DELETED