From 1a2892a82a7d3b1647320dd939f3c2755caea7f6 Mon Sep 17 00:00:00 2001 From: alphaeusmote <41258468-alphaeusmote@users.noreply.replit.com> Date: Sat, 24 May 2025 02:18:30 +0000 Subject: [PATCH] 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 --- .env.example | 36 ++++++++++ .gitignore | 65 ++++++++++++++++-- CONTRIBUTING.md | 108 ++++++++++++++++++++++++++++++ LICENSE | 21 ++++++ docs/images/dashboard-preview.svg | 62 +++++++++++++++++ docs/roadmap.md | 104 ++++++++++++++++++++++++++++ 6 files changed, 391 insertions(+), 5 deletions(-) create mode 100644 .env.example create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 docs/images/dashboard-preview.svg create mode 100644 docs/roadmap.md diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..cc596c7 --- /dev/null +++ b/.env.example @@ -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 \ No newline at end of file diff --git a/.gitignore b/.gitignore index f9ba7f8..0431ecf 100644 --- a/.gitignore +++ b/.gitignore @@ -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 \ No newline at end of file +.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 \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ff4f0e0 --- /dev/null +++ b/CONTRIBUTING.md @@ -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! \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..85b8183 --- /dev/null +++ b/LICENSE @@ -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. \ No newline at end of file diff --git a/docs/images/dashboard-preview.svg b/docs/images/dashboard-preview.svg new file mode 100644 index 0000000..a996f07 --- /dev/null +++ b/docs/images/dashboard-preview.svg @@ -0,0 +1,62 @@ + + + + + + + + DynamoDNS + + + + + + + Dashboard + + Domains + DNS Records + History + Metrics + Webhooks + API Tokens + Settings + + + + DNS Overview + + + + Total Domains + 24 + + + DNS Records + 186 + + + Updates Today + 42 + + + + DNS Updates Over Time + + + + + + + + + + + Recent Activity + + example.com: A record updated + dev.site.io: MX record added + api.example.org: CNAME updated + myapp.com: TXT record added + \ No newline at end of file diff --git a/docs/roadmap.md b/docs/roadmap.md new file mode 100644 index 0000000..a687c8d --- /dev/null +++ b/docs/roadmap.md @@ -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! \ No newline at end of file