Skip to content

Instantly share code, notes, and snippets.

View presmihaylov's full-sized avatar

Pres Mihaylov presmihaylov

View GitHub Profile
@presmihaylov
presmihaylov / slackAlerts.ts
Created May 10, 2025 07:04
Simple slack alerts
import type { Result } from "true-myth";
export function newSlackAlertInterceptor(args: {
slackWebhookUrl: string;
environment: string;
appName: string;
logsUrl: string;
}) {
const { slackWebhookUrl, environment, appName, logsUrl } = args;
const baseParams = {
@presmihaylov
presmihaylov / index.ts
Created March 9, 2025 17:34
Weather MCP Server example
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "Weather server",
version: "1.0.0",
});
server.tool(
version: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
volumes:
- ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
healthcheck:
test: ["CMD", "curl", "-s", "-f", "http://localhost:9200/_cat/health"]
interval: 3s
git clone https://github.com/pmihaylovcom/go-elk-tutorial
package main
// imports
func main() {
fx.New(
bundlefx.Module,
fx.Invoke(httphandler.New),
).Run()
}
package bundlefx
// imports
func registerHooks(
lifecycle fx.Lifecycle,
logger *zap.SugaredLogger, cfg *configfx.Config, mux *http.ServeMux,
) {
lifecycle.Append(
fx.Hook{
package main
// imports
func main() {
fx.New(
configfx.Module,
loggerfx.Module,
httpfx.Module,
fx.Invoke(httphandler.New),
package httpfx
// imports
// Module provided to fx
var Module = fx.Options(
fx.Provide(http.NewServeMux),
)
...
func main() {
fx.New(
...
fx.Provide(http.NewServeMux),
...
).Run()
}
...
func main() {
fx.New(
configfx.Module,
loggerfx.Module,
...
).Run()
}