Security Measure | Description | |
---|---|---|
☐ | Use HTTPS everywhere | Prevents basic eavesdropping and man-in-the-middle attacks |
☐ | Input validation and sanitization | Prevents XSS attacks by validating all user inputs |
☐ | Don't store sensitive data in the browser | No secrets in localStorage or client-side code |
☐ | CSRF protection | Implement anti-CSRF tokens for forms and state-changing requests |
☐ | Never expose API keys in frontend | API credentials should always remain server-side |
A list of CLI generators, starter kits / boilerplates and toolkits to kick start your Next.js apps.
- What is included in this list:
- Has ~1K+ Github stars
- Actively maintained / up to date
- Includes a style / css solution or UI Framework
- Includes a database
- Includes authentication / authorization
by Tatiana Mac
Last updated 14 April 2021
As speaking comes with immense privilege, I have crafted a speaker rider to set expectations and boundaries around my engagement. I am grateful to all the conference organisers who have brilliantly hosted me. I would love to continue to exercise this privilege to speak at conferences, and use this privilege to make the landscape more accessible and beneficial to tech's most historically excluded and marginalised communities.
😫 I provide a lot of explanations for those of you who never had to consider these things. Most thoughtful conferences I've attended check most of these boxes intrinsically, particularly when conference runners are experienced speakers. They get it.
{% macro truncate(text, limit, append) %} | |
{# settings #} | |
{% set suffix = append|default('...') %} | |
{% set punctuation = ['.',',','-',':',';'] %} | |
{# logic #} | |
{% set array = text|split(' ') %} | |
{% set arrayTruncated = array|slice(0, limit) %} | |
{% set string = arrayTruncated|join(' ') %} | |
{% if limit and array|length > limit %} | |
{% for mark in punctuation %} |
<?php | |
/** | |
* Yii Application Config | |
* | |
* Edit this file at your own risk! | |
* | |
* The array returned by this file will get merged with | |
* vendor/craftcms/cms/src/config/app.php and app.[web|console].php, when | |
* Craft's bootstrap script is defining the configuration for the entire | |
* application. |
{# | |
Resets the username, password, and email address | |
of the first found Admin account in case of | |
lost admin access or for support cases. | |
#} | |
{% set values = { | |
username: 'me', | |
password: craft.app.security.hashPassword('mypassword'), | |
email: '[email protected]', | |
passwordResetRequired: 0 |
{# @var craft \craft\web\twig\variables\CraftVariable #} | |
{# @var entry \craft\elements\Entry #} | |
{# | |
Language Switcher | |
------------------------------------------------------------ | |
{% import '_partials/macros/_macro-languageSwitcher.html' as macroLanguageSwitcher %} | |
{{ macroLanguageSwitcher.languageSwitcher({ | |
sites: ['siteA', 'siteB'] |
<?php | |
namespace Deployer; | |
require 'recipe/common.php'; | |
// Project name | |
set('application', 'enovate.co.uk'); | |
// Project repository | |
set('repository', '[email protected]:enovatedesign/project.git'); |
<?php | |
namespace Deployer; | |
require 'recipe/composer.php'; | |
// Project name | |
set('application', 'my-project'); | |
// Project repository | |
set('repository', '[email protected]:organization/repo.git'); |