{"id":36647499,"url":"https://github.com/rafnixg/links","last_synced_at":"2026-01-12T10:02:08.859Z","repository":{"id":234612559,"uuid":"789205597","full_name":"rafnixg/links","owner":"rafnixg","description":"Links Bio RafnixG using Reflex","archived":false,"fork":false,"pushed_at":"2025-12-24T17:56:38.000Z","size":2690,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"new-links","last_synced_at":"2025-12-26T08:31:47.671Z","etag":null,"topics":["python3","reflex"],"latest_commit_sha":null,"homepage":"https://links.rafnixg.dev","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rafnixg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-04-19T23:25:34.000Z","updated_at":"2025-12-24T17:56:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"21a9df68-c0bb-4be5-ba37-2c8de198324f","html_url":"https://github.com/rafnixg/links","commit_stats":null,"previous_names":["rafnixg/links"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/rafnixg/links","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafnixg%2Flinks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafnixg%2Flinks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafnixg%2Flinks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafnixg%2Flinks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rafnixg","download_url":"https://codeload.github.com/rafnixg/links/tar.gz/refs/heads/new-links","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafnixg%2Flinks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28337870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python3","reflex"],"created_at":"2026-01-12T10:02:08.680Z","updated_at":"2026-01-12T10:02:08.852Z","avatar_url":"https://github.com/rafnixg.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LinkBioSite\n\n[![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![PyPI Version](https://img.shields.io/pypi/v/linkbiosite.svg)](https://pypi.org/project/linkbiosite/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Jinja2](https://img.shields.io/badge/Jinja2-3.0+-orange.svg)](https://jinja.palletsprojects.com/)\n[![GitHub stars](https://img.shields.io/github/stars/rafnixg/links.svg?style=social\u0026label=Star)](https://github.com/rafnixg/links)\n[![GitHub forks](https://img.shields.io/github/forks/rafnixg/links.svg?style=social\u0026label=Fork)](https://github.com/rafnixg/links/fork)\n\nA modern, brutalist-designed static site generator for creating beautiful link bio pages. Built with Python and Jinja2 templates, featuring 2026 design trends with cosmic midnight color palettes and experimental layouts.\n\n## ✨ Features\n\n- 🎨 **2026 Brutalist Design**: Raw edges, asymmetrical layouts, and bold typography\n- 🌙 Cosmic midnight color palette with high contrast\n- 🚀 Built with Python and Jinja2 templating\n- 📱 Mobile-friendly responsive layout\n- 🐳 Static site generation for fast hosting\n- 📊 Analytics integration ready\n- 🔍 SEO optimized with meta tags\n- ✨ **Motion Design**: Subtle animations and interactive hovers\n- ♿ **Accessibility**: Reduced motion support\n- 🛠️ **Library API**: Use as a Python library or CLI tool\n- 🐳 **Docker Support**: Multi-stage builds for development and production\n\n## 🚀 Quick Start\n\n### Installation\n\nInstall LinkBioSite using pip:\n\n```bash\npip install linkbiosite\n```\n\nOr install from source for development:\n\n```bash\ngit clone https://github.com/rafnixg/links.git\ncd links\npip install -e .\n```\n\n### Create Your First Link Bio\n\n1. Initialize a new project:\n```bash\nlinkbiosite init my-bio\ncd my-bio\n```\n\n2. Edit `data.json` with your information:\n```json\n{\n  \"bio\": {\n    \"name\": \"Your Name\",\n    \"greeting\": \"Hi, I'm Your Name\",\n    \"subtitle\": \"Your awesome subtitle\",\n    \"handle\": \"@yourhandle\",\n    \"avatar\": \"/avatar.png\",\n    \"avatar_alt\": \"YN\"\n  },\n  \"links\": {\n    \"Social\": [\n      {\"text\": \"Website\", \"tag\": \"globe\", \"url\": \"https://example.com\"},\n      {\"text\": \"Twitter\", \"tag\": \"twitter\", \"url\": \"https://twitter.com/yourhandle\"}\n    ]\n  }\n}\n```\n\n3. Build your site:\n```bash\nlinkbiosite build\n```\n\n4. Serve locally for development:\n```bash\nlinkbiosite serve\n```\n\nYour link bio will be available at http://localhost:8000\n\n## 💻 Usage\n\n### Command Line Interface\n\nLinkBioSite provides a comprehensive CLI for all operations:\n\n```bash\n# Initialize a new project\nlinkbiosite init [directory]\n\n# Build the static site\nlinkbiosite build [--output OUTPUT_DIR]\n\n# Serve locally for development\nlinkbiosite serve [--port PORT] [--host HOST]\n\n# Show help\nlinkbiosite --help\n```\n\n### Python API\n\nUse LinkBioSite as a Python library:\n\n```python\nfrom linkbiosite import build, init, serve\n\n# Initialize a new project\ninit(\"my-bio-project\")\n\n# Build the site\noutput_dir = build()\n\n# Serve for development\nserve(port=8000)\n```\n\n### Advanced Usage\n\n```python\nfrom linkbiosite import LinkBioSiteGenerator\n\n# Create a custom generator\ngenerator = LinkBioSiteGenerator(project_root=\"/path/to/project\")\n\n# Build with custom output directory\noutput_path = generator.build_site(output_dir=\"/custom/output\")\n\n# Load and validate data\ndata = generator.load_data()\ngenerator.validate_data(data)\n```\n\n## 🐳 Docker Usage\n\n### Development\n\nBuild and run the development container:\n\n```bash\n# Build development image\ndocker build --target runtime -t linkbio:dev .\n\n# Run with volume mounting\ndocker run -it --rm \\\n  -v $(pwd):/app/project \\\n  -v $(pwd)/public:/app/output \\\n  -p 8000:8000 \\\n  linkbiosite:dev \\\n  linkbiosite serve --host 0.0.0.0\n```\n\n### Production\n\nBuild and run the production container:\n\n```bash\n# Build production image\ndocker build --target production -t linkbiosite:prod .\n\n# Run nginx server\ndocker run -d -p 80:80 linkbiosite:prod\n```\n\n## 📁 Project Structure\n\nWhen you initialize a new LinkBioSite project, you'll get:\n\n```\nmy-bio/\n├── data.json          # Site configuration and content\n├── templates/         # Jinja2 templates\n│   ├── index.html     # Main page template\n│   └── styles.css     # CSS styles\n├── assets/            # Static assets (images, etc.)\n└── public/            # Generated site (after build)\n```\n\n## 🛠️ Technologies\n\n- **Language**: Python 3.8+\n- **Templating**: Jinja2 3.0+\n- **Styling**: CSS3 with brutalist design\n- **Containerization**: Docker with multi-stage builds\n- **Package Management**: Modern Python packaging (pyproject.toml)\n\n## 📖 Configuration\n\n### data.json Structure\n\n```json\n{\n  \"bio\": {\n    \"name\": \"Your Name\",\n    \"greeting\": \"Welcome message\",\n    \"subtitle\": \"Your subtitle\",\n    \"handle\": \"@yourhandle\",\n    \"avatar\": \"/path/to/avatar.png\",\n    \"avatar_alt\": \"Alt text for avatar\"\n  },\n  \"links\": {\n    \"Category Name\": [\n      {\n        \"text\": \"Link Text\",\n        \"tag\": \"icon-name\",\n        \"url\": \"https://example.com\"\n      }\n    ]\n  },\n  \"footer\": {\n    \"copyright\": \"© {year} Your Name. All rights reserved.\"\n  },\n  \"analytics\": {},\n  \"meta\": {\n    \"title\": \"Page Title\",\n    \"description\": \"Page description for SEO\"\n  }\n}\n```\n\n### Custom Templates\n\nLinkBio uses Jinja2 templates. Customize `templates/index.html` and `templates/styles.css` to match your design needs.\n\n## 👤 Author\n\n**Rafnix Guzmán**\n\n- Website: [rafnixg.dev](https://rafnixg.dev)\n- Twitter: [@rafnixg](https://twitter.com/rafnixg)\n- GitHub: [@rafnixg](https://github.com/rafnixg)\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📝 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## ⭐ Show your support\n\nGive a ⭐️ if this project helped you!\n\n## 📚 Documentation\n\nFor detailed documentation, visit [linkbio.readthedocs.io](https://linkbio.readthedocs.io) (coming soon).\n\n## 🙏 Acknowledgments\n\n- Inspired by 2026 design trends\n- Built with modern Python packaging\n- Thanks to the Jinja2 and Python communities```\n\n3. Install dependencies:\n```bash\npip install -r requirements.txt\n```\n\n## 💻 Usage\n\n### Building the Site\n\nTo generate the static site:\n\n```bash\npython build.py\n```\n\nThe generated site will be in the `public/` directory.\n\n### Development Mode\n\nRun the application in development mode with hot reload:\n```bash\nreflex run\n```\n\nThe application will be available at:\n- Frontend: http://localhost:3000\n- Backend: http://localhost:8000\n\n### Export Static Files\n\nExport the public files to the `public` folder:\n```bash\n./public_export\n```\n\n### Production Mode\n\nRun the application in production mode:\n```bash\nreflex run --env prod\n```\n\n## 🐳 Docker Deployment\n\nBuild and run the application using Docker:\n\n```bash\n# Build the Docker image\ndocker build -t reflex-links:latest .\n\n# Run the container\ndocker run -d -p 8000:8000 -p 3000:3000 --name links reflex-links:latest\n```\n\nAccess the application at http://localhost:3000\n\n## 📁 Project Structure\n\n```\nlinks/\n├── link_bio/           # Main application code\n│   ├── components/     # Reusable UI components\n│   ├── styles/         # CSS styles and theme\n│   ├── views/          # Page views (header, footer, links)\n│   └── link_bio.py     # Main application file\n├── assets/             # Static assets (images, icons)\n├── public/             # Public files\n├── requirements.txt    # Python dependencies\n├── rxconfig.py         # Reflex configuration\n└── Dockerfile          # Docker configuration\n```\n\n## 🛠️ Technologies\n\n- **Static Site Generator**: Custom Python/Jinja2 SSG\n- **Language**: Python 3.11+\n- **Templating**: Jinja2 3.1.2\n- **Styling**: CSS3 with animations and brutalist design\n- **Analytics**: Umami Analytics\n- **Containerization**: Docker\n\n## 👤 Author\n\n**Rafnix Guzmán**\n\n- Website: [links.rafnixg.dev](https://links.rafnixg.dev)\n- Twitter: [@rafnixg](https://twitter.com/rafnixg)\n- GitHub: [@rafnixg](https://github.com/rafnixg)\n\n## 🤝 Contributing\n\nContributions, issues, and feature requests are welcome! Feel free to check the [issues page](https://github.com/rafnixg/links/issues).\n\n## 📝 License\n\nThis project is open source and available for personal and commercial use.\n\n## ⭐ Show your support\n\nGive a ⭐️ if this project helped you!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafnixg%2Flinks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frafnixg%2Flinks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frafnixg%2Flinks/lists"}