Set up the project with initial files and improve development experience

Add .gitignore, .env.example, CONTRIBUTING.md, LICENSE, a preview image, and roadmap to the project.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 9111ef36-26c8-4085-84ca-a35dc1fec1b5
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/7083d608-d6d3-4a6a-9a27-6286c5109627/910f6160-6716-488e-83e6-61256595c269.jpg
This commit is contained in:
alphaeusmote
2025-05-24 02:18:31 +00:00
6 changed files with 391 additions and 5 deletions
+36
View File
@@ -0,0 +1,36 @@
# Database Configuration
DATABASE_URL=postgresql://username:password@localhost:5432/dynamodns
# Server Configuration
PORT=5000
NODE_ENV=development
HOST=0.0.0.0
SESSION_SECRET=your_secure_random_string
# Authentication Configuration
ENABLE_REGISTRATION=false
DEFAULT_ADMIN_USERNAME=admin
DEFAULT_ADMIN_PASSWORD=admin # Change this in production!
DEFAULT_ADMIN_EMAIL=admin@example.com
# LDAP Authentication (Optional)
LDAP_ENABLED=false
LDAP_URL=ldap://ldap.example.com
LDAP_BIND_DN=cn=admin,dc=example,dc=com
LDAP_BIND_PASSWORD=your_ldap_password
LDAP_SEARCH_BASE=ou=users,dc=example,dc=com
LDAP_SEARCH_FILTER=(uid={{username}})
LDAP_USER_ATTR_USERNAME=uid
LDAP_USER_ATTR_EMAIL=mail
LDAP_USER_ATTR_DISPLAY_NAME=cn
# OpenID Connect Authentication (Optional)
OIDC_ENABLED=false
OIDC_ISSUER=https://auth.example.com
OIDC_CLIENT_ID=your_client_id
OIDC_CLIENT_SECRET=your_client_secret
OIDC_CALLBACK_URL=https://dynamodns.example.com/api/auth/oidc/callback
OIDC_SCOPE="openid profile email"
# Logging
LOG_LEVEL=info
+60 -5
View File
@@ -1,6 +1,61 @@
node_modules
dist
# Dependencies
node_modules/
.pnp
.pnp.js
# Testing
coverage/
.nyc_output/
# Build output
dist/
build/
# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# Logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids/
*.pid
*.seed
*.pid.lock
# Editor directories and files
.idea/
.vscode/
*.swp
*.swo
.DS_Store
server/public
vite.config.ts.*
*.tar.gz
.directory
Thumbs.db
# Cache directories
.npm/
.eslintcache
.stylelintcache
.cache/
# Debug files
.node_repl_history
# Yarn Integrity file
.yarn-integrity
# TypeScript cache
*.tsbuildinfo
next-env.d.ts
# Local package files
package-lock.json.1
package-lock-json.bak
+108
View File
@@ -0,0 +1,108 @@
# Contributing to DynamoDNS
Thank you for your interest in contributing to DynamoDNS! This document provides guidelines and instructions for contributing to this project.
## Code of Conduct
By participating in this project, you agree to abide by our Code of Conduct. Please read it to understand what behavior will and will not be tolerated.
## How Can I Contribute?
### Reporting Bugs
This section guides you through submitting a bug report. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.
- Use the issue tracker to report bugs
- Before creating a new issue, check if the problem has already been reported
- When you create a new issue, include as many details as possible by filling out the provided template
### Suggesting Enhancements
This section guides you through submitting an enhancement suggestion, including completely new features and minor improvements to existing functionality.
- Use the issue tracker with the enhancement label
- Provide a clear and detailed explanation of the feature you want
- Explain why this enhancement would be useful to most DynamoDNS users
### Your First Code Contribution
Unsure where to begin contributing? Look for issues labeled:
- `good first issue` - issues which are good for newcomers
- `help wanted` - issues which need extra attention
- `documentation` - improvements or additions to documentation
### Pull Requests
- Fill in the required template
- Follow the coding style and standards
- Include appropriate test cases
- Update documentation for any new features
- End all files with a newline
- Place requires/imports in the following order:
- Built-in Node Modules (e.g., 'path')
- External Modules (e.g., 'express')
- Internal Modules (e.g., './utils')
## Development Setup
To set up your development environment:
1. Fork the repository
2. Clone your fork locally
3. Install dependencies: `npm install`
4. Create a `.env` file with development settings
5. Run `npm run dev` to start the development server
See the [Development Guide](docs/development-guide.md) for more detailed instructions.
## Coding Guidelines
### JavaScript/TypeScript Style Guide
- We use TypeScript for type safety
- Follow the ESLint configuration included in the project
- Use Prettier for code formatting
- Write descriptive variable and function names
- Comment your code where necessary, especially complex logic
### Git Commit Messages
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
- Consider starting the commit message with an applicable emoji:
-`:sparkles:` when adding a new feature
- 🐛 `:bug:` when fixing a bug
- 📚 `:books:` when adding or updating documentation
- ♻️ `:recycle:` when refactoring code
- 🧪 `:test_tube:` when adding tests
- 🎨 `:art:` when improving the format/structure of the code
### Testing Guidelines
- Write tests for all new features and bug fixes
- Aim for high test coverage
- Test edge cases and error conditions
- Run the full test suite before submitting a pull request
## Pull Request Process
1. Ensure all tests pass
2. Update the documentation with details of changes
3. The pull request will be merged once it receives approval from maintainers
## Release Process
DynamoDNS follows semantic versioning. The release process is:
1. New features in master branch are bundled for a future release
2. Release candidates undergo additional testing
3. Final releases are tagged and published
## Questions?
If you have any questions, feel free to create an issue with the "question" label or contact the maintainers directly.
Thank you for contributing to DynamoDNS!
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 DynamoDNS Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="800" height="450" viewBox="0 0 800 450" xmlns="http://www.w3.org/2000/svg">
<!-- Dashboard Background -->
<rect x="0" y="0" width="800" height="450" fill="#f8fafc" />
<!-- Header Bar -->
<rect x="0" y="0" width="800" height="60" fill="#1e293b" />
<text x="30" y="38" font-family="Arial" font-size="24" font-weight="bold" fill="white">DynamoDNS</text>
<!-- Navigation Sidebar -->
<rect x="0" y="60" width="200" height="390" fill="#f1f5f9" />
<!-- Navigation Items -->
<rect x="10" y="80" width="180" height="40" rx="4" fill="#e2e8f0" />
<text x="45" y="105" font-family="Arial" font-size="14" fill="#334155">Dashboard</text>
<text x="45" y="155" font-family="Arial" font-size="14" fill="#64748b">Domains</text>
<text x="45" y="195" font-family="Arial" font-size="14" fill="#64748b">DNS Records</text>
<text x="45" y="235" font-family="Arial" font-size="14" fill="#64748b">History</text>
<text x="45" y="275" font-family="Arial" font-size="14" fill="#64748b">Metrics</text>
<text x="45" y="315" font-family="Arial" font-size="14" fill="#64748b">Webhooks</text>
<text x="45" y="355" font-family="Arial" font-size="14" fill="#64748b">API Tokens</text>
<text x="45" y="395" font-family="Arial" font-size="14" fill="#64748b">Settings</text>
<!-- Main Content Area -->
<rect x="220" y="80" width="560" height="50" rx="6" fill="#ffffff" stroke="#e2e8f0" stroke-width="1" />
<text x="240" y="110" font-family="Arial" font-size="16" font-weight="bold" fill="#0f172a">DNS Overview</text>
<!-- Statistics Cards -->
<rect x="220" y="150" width="170" height="100" rx="6" fill="#ffffff" stroke="#e2e8f0" stroke-width="1" />
<text x="240" y="180" font-family="Arial" font-size="14" fill="#64748b">Total Domains</text>
<text x="240" y="215" font-family="Arial" font-size="24" font-weight="bold" fill="#0f172a">24</text>
<rect x="410" y="150" width="170" height="100" rx="6" fill="#ffffff" stroke="#e2e8f0" stroke-width="1" />
<text x="430" y="180" font-family="Arial" font-size="14" fill="#64748b">DNS Records</text>
<text x="430" y="215" font-family="Arial" font-size="24" font-weight="bold" fill="#0f172a">186</text>
<rect x="600" y="150" width="170" height="100" rx="6" fill="#ffffff" stroke="#e2e8f0" stroke-width="1" />
<text x="620" y="180" font-family="Arial" font-size="14" fill="#64748b">Updates Today</text>
<text x="620" y="215" font-family="Arial" font-size="24" font-weight="bold" fill="#0f172a">42</text>
<!-- Charts -->
<rect x="220" y="270" width="350" height="160" rx="6" fill="#ffffff" stroke="#e2e8f0" stroke-width="1" />
<text x="240" y="300" font-family="Arial" font-size="14" font-weight="bold" fill="#0f172a">DNS Updates Over Time</text>
<!-- Simple line chart -->
<polyline points="240,380 270,360 300,370 330,350 360,330 390,345 420,320 450,310 480,330 510,290 540,300"
fill="none" stroke="#3b82f6" stroke-width="2" />
<!-- X and Y axis -->
<line x1="240" y1="380" x2="540" y2="380" stroke="#94a3b8" stroke-width="1" />
<line x1="240" y1="380" x2="240" y2="300" stroke="#94a3b8" stroke-width="1" />
<!-- Recent Activity -->
<rect x="590" y="270" width="180" height="160" rx="6" fill="#ffffff" stroke="#e2e8f0" stroke-width="1" />
<text x="610" y="300" font-family="Arial" font-size="14" font-weight="bold" fill="#0f172a">Recent Activity</text>
<text x="610" y="330" font-family="Arial" font-size="12" fill="#64748b">example.com: A record updated</text>
<text x="610" y="350" font-family="Arial" font-size="12" fill="#64748b">dev.site.io: MX record added</text>
<text x="610" y="370" font-family="Arial" font-size="12" fill="#64748b">api.example.org: CNAME updated</text>
<text x="610" y="390" font-family="Arial" font-size="12" fill="#64748b">myapp.com: TXT record added</text>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

+104
View File
@@ -0,0 +1,104 @@
# DynamoDNS Roadmap
This document outlines the planned features and improvements for future releases of DynamoDNS.
## Short-term Goals (Next 3 Months)
### Stability and Performance
- [ ] Improve error handling across the application
- [ ] Optimize database queries for better performance
- [ ] Implement comprehensive logging system
- [ ] Add unit and integration tests to reach 80% code coverage
### User Experience
- [ ] Enhance mobile responsiveness across all pages
- [ ] Add dark mode theme
- [ ] Implement guided setup wizard for new users
- [ ] Create interactive DNS record editor
- [ ] Improve accessibility compliance
### Core Features
- [ ] Support for SRV and CAA record types
- [ ] Batch import/export of DNS records
- [ ] Enhanced filter and search functionality for records
- [ ] Add support for DNS templates
## Mid-term Goals (4-8 Months)
### Enhanced Security
- [ ] Implement two-factor authentication
- [ ] Add IP-based access controls
- [ ] Create audit logging system
- [ ] Add rate limiting for API endpoints
- [ ] Enhance password policy management
### Integrations
- [ ] Add support for DNS-over-HTTPS (DoH) validation
- [ ] Integrate with additional DNS providers (Namecheap, Gandi, etc.)
- [ ] Create Slack/Discord notification integrations
- [ ] Add support for PagerDuty and OpsGenie for alerts
- [ ] Implement SMTP notification system
### Advanced Features
- [ ] Bulk operations for DNS records
- [ ] Scheduled DNS record changes
- [ ] DNS health monitoring and alerting
- [ ] Domain expiration monitoring
- [ ] DNS propagation checking across multiple resolvers
## Long-term Goals (9+ Months)
### Enterprise Features
- [ ] Multi-region deployment support
- [ ] High availability configuration
- [ ] Automated disaster recovery
- [ ] Advanced SSO integration (SAML, etc.)
- [ ] Advanced permission management with custom role definitions
### Analytics and Reporting
- [ ] Enhanced metrics dashboard with customizable views
- [ ] Scheduled report generation and delivery
- [ ] Anomaly detection for DNS traffic
- [ ] Comprehensive API usage analytics
- [ ] Custom report builder
### Community and Ecosystem
- [ ] Public API documentation portal
- [ ] SDK development for common programming languages
- [ ] Plugin architecture for extensibility
- [ ] Community contribution guidelines and support
- [ ] Marketplace for third-party integrations and templates
## Feature Requests
If you have a feature request, please submit it as an issue in our GitHub repository with the "feature request" label. Include a detailed description of the feature, its potential benefits, and any relevant use cases.
## Priority Adjustment
This roadmap is subject to change based on user feedback and community needs. We prioritize features based on:
1. User demand and feedback
2. Strategic alignment with project goals
3. Implementation complexity and resource requirements
4. Security considerations
5. Dependency on other features
## Release Process
We follow a predictable release cycle:
- **Patch releases** (e.g., 1.0.1): Bug fixes and minor improvements, released as needed
- **Minor releases** (e.g., 1.1.0): New features and enhancements, released approximately every 4-6 weeks
- **Major releases** (e.g., 2.0.0): Significant changes that may include breaking changes, released 2-3 times per year
Each major and minor release will be preceded by at least one release candidate (RC) for testing.
## Contributing to the Roadmap
We welcome community involvement in shaping this roadmap. If you're interested in contributing to any of these features or have suggestions for the roadmap, please:
1. Join the discussion in our community forums
2. Submit detailed proposals for feature implementation
3. Contribute code through pull requests (see [CONTRIBUTING.md](../CONTRIBUTING.md))
Thank you for your interest in the future of DynamoDNS!