{"id":43820102,"url":"https://github.com/21stdigital/21st.digital","last_synced_at":"2026-02-06T01:50:14.543Z","repository":{"id":232405252,"uuid":"782036026","full_name":"21stdigital/21st.digital","owner":"21stdigital","description":"Revamping the 21st digital website to offer an enhanced user experience with a fresh, modern design, utilizing the latest in web technologies for superior performance and accessibility.","archived":false,"fork":false,"pushed_at":"2026-01-26T21:00:14.000Z","size":2015,"stargazers_count":1,"open_issues_count":49,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-27T07:45:55.167Z","etag":null,"topics":["laravel","statamic","tailwindcss"],"latest_commit_sha":null,"homepage":"https://21st.digital","language":"PHP","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/21stdigital.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":null,"dco":null,"cla":null}},"created_at":"2024-04-04T14:12:21.000Z","updated_at":"2026-01-26T20:59:05.000Z","dependencies_parsed_at":"2024-06-11T09:00:45.564Z","dependency_job_id":"52a92b4f-6f13-4932-92b5-a9b3626cee44","html_url":"https://github.com/21stdigital/21st.digital","commit_stats":null,"previous_names":["21stdigital/21st.digital"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/21stdigital/21st.digital","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/21stdigital%2F21st.digital","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/21stdigital%2F21st.digital/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/21stdigital%2F21st.digital/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/21stdigital%2F21st.digital/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/21stdigital","download_url":"https://codeload.github.com/21stdigital/21st.digital/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/21stdigital%2F21st.digital/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29144717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T01:13:33.096Z","status":"ssl_error","status_checked_at":"2026-02-06T01:11:47.313Z","response_time":65,"last_error":"SSL_read: 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":["laravel","statamic","tailwindcss"],"created_at":"2026-02-06T01:50:13.491Z","updated_at":"2026-02-06T01:50:14.531Z","avatar_url":"https://github.com/21stdigital.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://21st.digital\"\u003e\n    \u003cimg src=\"resources/svg/21st-digital-logo.svg#gh-light-mode-only\" alt=\"21st digital\" width=\"250\"\u003e\n  \u003c/a\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eWe love to create digital products\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/21stdigital/21st.digital/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/21stdigital/21st.digital?include_prereleases\" alt=\"Latest Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/21stdigital/21st.digital/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/21stdigital/21st.digital\" alt=\"Issues\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## About 21st digital\n\n21st digital is your partner for developing innovative digital products. We are more than just software developers – we are your allies in navigating the journey of digital transformation. We challenge the status quo, optimize processes, and implement the right strategies to ensure not only the success of digital products but also the transformation of entire business models.\n\n## Project Overview\n\nThis repository contains the source code for the 21st digital company website. The site is powered by [Statamic CMS](https://statamic.com/), a flat-file content management system that provides a flexible, user-friendly interface for managing website content.\n\n## Features\n\n- **Statamic CMS**: Utilizes a modern, flat-file CMS that doesn't rely on databases, offering speed and security.\n- **Custom Design**: Features a tailored design that reflects our brand's identity and values.\n- **Responsive Layout**: Optimized for all devices, ensuring a seamless experience across desktops, tablets, and smartphones.\n- **SEO Optimized**: Built with best practices in mind to achieve high search engine rankings.\n\n## Requirements\n\nTo run this project, ensure your local environment meets the following requirements:\n\n- **PHP**: Version 8.3 or higher, for compatibility with the latest features and security updates.\n- **Composer**: Version 2.0 or higher, to manage PHP dependencies effectively.\n- **Node.js** and **NPM**: Latest stable versions, to handle frontend dependencies and build processes.\n\nMake sure all dependencies are installed and properly configured before proceeding with the setup. This ensures a smooth development and deployment process.\n\n## Getting Started\n\nBefore setting up the project, ensure you have all the necessary requirements listed in the [Requirements](#requirements) section. Follow these steps to set up the project locally:\n\nTo set up the project locally, follow these steps:\n\n1. **Clone the repository:**\n\n   Use the following command to clone the repository to your local machine:\n\n```bash\n git clone https://github.com/21stdigital/21st.digital.git\n cd 21st.digital\n```\n\n2. **Install Dependencies:**\n\n   Make sure PHP, NPM, and Composer are installed. Then, install the required dependencies by running:\n\n```bash\n  composer install\n  npm install\n```\n\n3. **Set Up Environment Variables:**\n\n   Copy the example environment file to a new .env file and modify it according to your local setup:\n\n```bash\n cp .env.example .env\n```\n\n4. **Run Local Server:**\n\n   Start the Statamic local development server using the command below:\n\n```bash\nphp please serve\n```\n\nVisit http://localhost:8000 in your browser to view the website.\n\n## Environment Configuration\n\nThe `.env` file is crucial for configuring the environment settings for your application. Below are tables describing each environment setting, grouped by category to help you configure your setup accurately.\n\n### Application Settings\n\n| **Setting**           | **Description**                                             | **Possible Values / Examples**              |\n| --------------------- | ----------------------------------------------------------- | ------------------------------------------- |\n| `APP_NAME`            | The name of your application.                               | `21st.digital`                              |\n| `APP_ENV`             | The environment the application is running in.              | `local`, `production`, `staging`, `testing` |\n| `APP_KEY`             | A 32-character base64 string used for encryption.           | `base64:your_generated_key_here`            |\n| `APP_DEBUG`           | Enables or disables debug mode.                             | `true`, `false`                             |\n| `APP_TIMEZONE`        | The timezone for your application.                          | `Europe/Berlin`                             |\n| `APP_URL`             | The base URL of the application.                            | `http://localhost`                          |\n| `APP_LOCALE`          | The default language locale of the application.             | `en`, `de`, `fr`                            |\n| `APP_FALLBACK_LOCALE` | The locale to use when the current locale is not available. | `en`, `de`                                  |\n| `APP_FAKER_LOCALE`    | The locale used by Faker for generating fake data.          | `en_US`, `de_DE`                            |\n\n### Maintenance Mode Settings\n\n| **Setting**              | **Description**                                 | **Possible Values / Examples** |\n| ------------------------ | ----------------------------------------------- | ------------------------------ |\n| `APP_MAINTENANCE_DRIVER` | The driver used for maintenance mode.           | `file`, `redis`                |\n| `APP_MAINTENANCE_STORE`  | The store where maintenance mode data is saved. | `file`, `redis`                |\n\n### Security Settings\n\n| **Setting**     | **Description**                                          | **Possible Values / Examples** |\n| --------------- | -------------------------------------------------------- | ------------------------------ |\n| `BCRYPT_ROUNDS` | The number of rounds to use for Bcrypt password hashing. | `10`, `12`                     |\n\n### Logging Configuration\n\n| **Setting**                | **Description**                       | **Possible Values / Examples**                                                  |\n| -------------------------- | ------------------------------------- | ------------------------------------------------------------------------------- |\n| `LOG_CHANNEL`              | The logging channel to use.           | `stack`, `single`, `daily`                                                      |\n| `LOG_STACK`                | The type of stack driver for logging. | `single`, `daily`                                                               |\n| `LOG_DEPRECATIONS_CHANNEL` | Where to log deprecation warnings.    | `null`, `log`                                                                   |\n| `LOG_LEVEL`                | The log level threshold.              | `debug`, `info`, `notice`, `warning`, `error`, `critical`, `alert`, `emergency` |\n\n### Session Configuration\n\n| **Setting**        | **Description**                                                     | **Possible Values / Examples**        |\n| ------------------ | ------------------------------------------------------------------- | ------------------------------------- |\n| `SESSION_DRIVER`   | The session driver to use.                                          | `file`, `cookie`, `database`, `redis` |\n| `SESSION_LIFETIME` | The number of minutes the session should be active before expiring. | `120`, `240`                          |\n| `SESSION_ENCRYPT`  | Enables or disables session encryption.                             | `true`, `false`                       |\n| `SESSION_PATH`     | The path for which the session is available.                        | `/`, `/app`                           |\n| `SESSION_DOMAIN`   | The domain that the session cookie is available to.                 | `null`, `.example.com`                |\n\n### Cache and Queue Configuration\n\n| **Setting**            | **Description**                     | **Possible Values / Examples** |\n| ---------------------- | ----------------------------------- | ------------------------------ |\n| `BROADCAST_CONNECTION` | The broadcast connection to use.    | `log`, `pusher`, `redis`       |\n| `FILESYSTEM_DISK`      | The default filesystem disk to use. | `local`, `public`, `s3`        |\n| `QUEUE_CONNECTION`     | The queue connection to use.        | `sync`, `database`, `redis`    |\n| `CACHE_STORE`          | The cache store to use.             | `file`, `redis`                |\n| `CACHE_PREFIX`         | The prefix to use for cache keys.   | `your_prefix_`                 |\n\n### Redis Configuration\n\n| **Setting**      | **Description**                        | **Possible Values / Examples** |\n| ---------------- | -------------------------------------- | ------------------------------ |\n| `MEMCACHED_HOST` | The host for the Memcached connection. | `127.0.0.1`                    |\n| `REDIS_CLIENT`   | The Redis client to use.               | `phpredis`, `predis`           |\n| `REDIS_HOST`     | The Redis server hostname.             | `127.0.0.1`                    |\n| `REDIS_PASSWORD` | The password for the Redis connection. | `null`, `your_password`        |\n| `REDIS_PORT`     | The port number for the Redis server.  | `6379`                         |\n\n### Mail Configuration\n\n| **Setting**         | **Description**                                   | **Possible Values / Examples**              |\n| ------------------- | ------------------------------------------------- | ------------------------------------------- |\n| `MAIL_MAILER`       | The mailer to use for sending emails.             | `smtp`, `sendmail`, `mailgun`, `ses`, `log` |\n| `MAIL_HOST`         | The host for the SMTP server.                     | `127.0.0.1`, `smtp.mailtrap.io`             |\n| `MAIL_PORT`         | The SMTP server port.                             | `2525`, `587`                               |\n| `MAIL_USERNAME`     | The username for the SMTP server.                 | `null`, `your_username`                     |\n| `MAIL_PASSWORD`     | The password for the SMTP server.                 | `null`, `your_password`                     |\n| `MAIL_ENCRYPTION`   | The encryption protocol for the SMTP connection.  | `tls`, `ssl`, `null`                        |\n| `MAIL_FROM_ADDRESS` | The email address to use for sending emails.      | `\"hello@example.com\"`                       |\n| `MAIL_FROM_NAME`    | The name to use for the `From` address in emails. | `\"21st.digital\"`                            |\n\n### Additional Settings\n\n| **Setting**     | **Description**                                | **Possible Values / Examples** |\n| --------------- | ---------------------------------------------- | ------------------------------ |\n| `VITE_APP_NAME` | The name of the application for use with Vite. | `\"21st.digital\"`               |\n\n### Statamic Specific Settings\n\n| **Setting**                        | **Description**                                                 | **Possible Values / Examples** |\n| ---------------------------------- | --------------------------------------------------------------- | ------------------------------ |\n| `STATAMIC_LICENSE_KEY`             | Your Statamic license key.                                      | `your_statamic_license_key`    |\n| `STATAMIC_PRO_ENABLED`             | Enables or disables Statamic Pro features.                      | `true`, `false`                |\n| `STATAMIC_STACHE_WATCHER`          | Enables or disables the Stache watcher for auto-updates.        | `true`, `false`                |\n| `STATAMIC_STATIC_CACHING_STRATEGY` | The caching strategy to use.                                    | `null`, `full`, `partial`      |\n| `STATAMIC_REVISIONS_ENABLED`       | Enables or disables content revisions.                          | `true`, `false`                |\n| `STATAMIC_GRAPHQL_ENABLED`         | Enables or disables GraphQL API.                                | `true`, `false`                |\n| `STATAMIC_API_ENABLED`             | Enables or disables REST API.                                   | `true`, `false`                |\n| `STATAMIC_GIT_ENABLED`             | Enables or disables automatic Git integration.                  | `true`, `false`                |\n| `STATAMIC_GIT_AUTOMATIC`           | Enables or disables automatic Git commits for content changes.  | `true`, `false`                |\n| `STATAMIC_GIT_PUSH`                | Determines if the system should push Git commits automatically. | `true`, `false`                |\n| `STATAMIC_GIT_USER_NAME`           | The Git user name for automated commits.                        | `your_git_username`            |\n| `STATAMIC_GIT_USER_EMAIL`          | The Git user email for automated commits.                       | `your_git_email@example.com`   |\n| `STATAMIC_OAUTH_ENABLED`           | Enables or disables OAuth for authentication.                   | `true`, `false`                |\n| `STATAMIC_EMAIL_LOGIN_ENABLED`     | Enables or disables email login for authentication.             | `true`, `false`                |\n\n### Google OAuth Configuration\n\n| **Setting**            | **Description**                                 | **Possible Values / Examples**          |\n| ---------------------- | ----------------------------------------------- | --------------------------------------- |\n| `GOOGLE_CLIENT_ID`     | The Client ID provided by Google for OAuth.     | `your_google_client_id`                 |\n| `GOOGLE_CLIENT_SECRET` | The Client Secret provided by Google for OAuth. | `your_google_client_secret`             |\n| `GOOGLE_REDIRECT_URI`  | The redirect URI after Google authentication.   | `http://localhost/auth/google/callback` |\n\n### DigitalOcean Spaces Configuration\n\nDigitalOcean's object storage is used to store various assets instead of relying on the local drive. This approach reduces the repository size while providing a cost-effective and scalable solution.\n\n| **Setting**          | **Description**                                                               | **Possible Values / Examples**                       |\n| -------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------- |\n| `DO_SPACES_KEY`      | Your DO Spaces access key, generated in the API section of the DO dashboard.  | `DO000000000000000000`                               |\n| `DO_SPACES_SECRET`   | Your DO Spaces secret key, generated in the API section of the DO dashboard.  | `0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t`           |\n| `DO_SPACES_ENDPOINT` | The endpoint URL for your DigitalOcean Space (found in the Space's settings). | `https://fra1.digitaloceanspaces.com`                |\n| `DO_SPACES_REGION`   | The region where your DO spaces is hosted.                                    | `fra1`, `sfo2`, `nyc3`                               |\n| `DO_SPACES_BUCKET`   | The unique name of your DO Space.                                             | `my-asset-space`                                     |\n| `DO_SPACES_URL`      | The base URL for accessing assets in your DO Space.                           | `https://my-asset-space.fra1.digitaloceanspaces.com` |\n\n## Conventional Commits\n\nWe follow the [Conventional Commits](https://www.conventionalcommits.org/) specification for our commit messages. This standard helps maintain a readable commit history and generates change logs automatically.\n\n### Commit Message Format\n\nEach commit message should have the following format:\n\n`[optional scope]: [optional body] [optional footer(s)]`\n\n#### Types\n\nThe following types are allowed:\n\n- **feat**: A new feature for the user.\n- **fix**: A bug fix for the user.\n- **docs**: Documentation changes or additions.\n- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc.).\n- **refactor**: A code change that neither fixes a bug nor adds a feature.\n- **perf**: A code change that improves performance.\n- **test**: Adding or updating tests.\n- **build**: Changes that affect the build system or external dependencies (example: `npm`, `composer`).\n- **ci**: Changes to our CI configuration files and scripts.\n- **chore**: Other changes that don’t modify `src` or `test` files.\n- **revert**: Reverts a previous commit.\n\n#### Example Commit Messages\n\n- `feat(auth): add OAuth support for Google and GitHub`\n- `fix(api): handle 500 errors gracefully in user endpoint`\n- `docs(readme): update installation instructions`\n\nBy following these conventions, we ensure that our commit history is easy to understand and navigate. This also helps in automating the release process and generating changelogs.\n\n## Contact\n\nFor any inquiries, please contact us at hello@21st.digital.\n\nThank you for visiting our repository! We hope you find our work inspiring and useful.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F21stdigital%2F21st.digital","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F21stdigital%2F21st.digital","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F21stdigital%2F21st.digital/lists"}