mirror of
https://github.com/freedbygrace/DynamoDNS.git
synced 2026-08-31 12:48:03 +00:00
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:
@@ -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
@@ -1,6 +1,61 @@
|
|||||||
node_modules
|
# Dependencies
|
||||||
dist
|
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
|
.DS_Store
|
||||||
server/public
|
.directory
|
||||||
vite.config.ts.*
|
Thumbs.db
|
||||||
*.tar.gz
|
|
||||||
|
# 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
@@ -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!
|
||||||
@@ -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.
|
||||||
@@ -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
@@ -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!
|
||||||
Reference in New Issue
Block a user