Skip to content

Instantly share code, notes, and snippets.

View lukepighetti's full-sized avatar
🦞

Luke Pighetti lukepighetti

🦞
View GitHub Profile
@lukepighetti
lukepighetti / Fastfile
Created July 6, 2023 13:39
Release Flutter app with environment variables to TestFlight every night with GitHub Actions
# ios/Fastlane/Fastfile
default_platform(:ios)
APPLE_ISSUER_ID = ENV["APPLE_ISSUER_ID"]
APPLE_KEY_CONTENT = ENV["APPLE_KEY_CONTENT"]
APPLE_KEY_ID = ENV["APPLE_KEY_ID"]
DEVELOPER_APP_ID = ENV["DEVELOPER_APP_ID"]
DEVELOPER_APP_IDENTIFIER = ENV["DEVELOPER_APP_IDENTIFIER"]
GIT_AUTHORIZATION = ENV["GIT_AUTHORIZATION"]
GITHUB_RUN_NUMBER = ENV["GITHUB_RUN_NUMBER"]
import 'package:flutter/material.dart';
class TextInputComponent extends StatefulWidget {
const TextInputComponent({super.key});
@override
State<TextInputComponent> createState() => _TextInputComponentState();
}
class _TextInputComponentState extends State<TextInputComponent> {
@lukepighetti
lukepighetti / device_service.dart
Last active June 28, 2023 00:49
All the basic data you need to roll your own analytics payloads
import 'dart:convert';
import 'dart:io';
import 'package:app/extensions.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:get_it/get_it.dart';
import 'package:package_info_plus/package_info_plus.dart';
// we need this in core dart so all these serialization packages can use it
// this enables generalized solutions for storage, messaging, tasks, etc
abstract interface class JsonCoder<T> {
String toJson(T payload);
T fromJson(String payload);
}
// then we can create generalized packages for things like storage
/// ```dart
@lukepighetti
lukepighetti / main.dart
Last active June 2, 2023 12:23
Need UUIDs that are shorter and URL safe? UUID -> hex bytes -> Base64Url
import 'dart:convert';
import 'package:uuid/uuid.dart';
void main(List<String> arguments) {
final uuid = "57290fdf-790f-4894-859e-3db0ae087f0e";
final codec = ShortUuidCodec();
final encodedUuid = codec.encode(uuid);
final decodedUuid = codec.decode(encodedUuid);
@lukepighetti
lukepighetti / fragment.glsl
Last active May 20, 2023 23:05
WebGL mesh gradient shaders from https://meshgradient.com, all credit to Burak Aslan https://www.producthunt.com/products/mesh-gradient
#define MAX_POINTS 16
precision mediump float;
uniform sampler2D texture;
uniform vec2 points[MAX_POINTS];
uniform float s2[MAX_POINTS];
uniform vec2 w[MAX_POINTS];
uniform int npoints;
uniform int warp;
@lukepighetti
lukepighetti / rounded_rectangle.dart
Created May 4, 2023 20:07
Boring RoundedRectangle with platform aware superellipse corners
import 'dart:io';
import 'package:figma_squircle/figma_squircle.dart';
import 'package:flutter/widgets.dart';
class RoundedRectangle extends StatelessWidget {
const RoundedRectangle({
super.key,
this.radius = 10,
this.height,
import 'package:app/extensions.dart';
import 'package:flutter/material.dart';
class AutoFillText extends StatelessWidget {
const AutoFillText(
this.text, {
super.key,
this.textStyle,
this.minFontSize = 18,
});
@lukepighetti
lukepighetti / app_store.dart
Last active April 18, 2023 18:23
A crusty but nice way to deal with ChangeNotifier stores in dart
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '/app/store_architecture.dart';
import '/feedback/feedback_store.dart';
import '/par/par_store.dart';
import '/settings/settings_binding_observer.dart';
import '/settings/settings_store.dart';
@lukepighetti
lukepighetti / server.py
Created March 21, 2023 15:55
A very basic mock python server
# flask --app server run
from dataclasses import dataclass, asdict
from typing import Generic, List, TypeVar
from flask import Flask
app = Flask(__name__)
T = TypeVar("T")