Gå til innhold

Kjernefunksjoner

Søknadsportalen består av flere moduler som sammen gir en helhetlig løsning for administrasjon av søknader og støtteordninger.

🔐 Autentisering

Brukerregistrering

  • Email og passord-basert registrering
  • Automatisk validering av organisasjonsnummer
  • Synkronisering mot Brønnøysundregistrene ved opprettelse

Innlogging

  • Sikker pålogging med Firebase Authentication
  • "Husk meg"-funksjonalitet
  • Tilbakestilling av passord (planlagt)

Roller

  • User: Vanlig bruker med tilgang til egen klubbs data
  • Superadmin: Administratorer med tilgang til globale innstillinger

👥 Klubbprofil

Organisasjonsdata

Automatisk henting og synkronisering av: - Organisasjonsnummer - Navn og forretningsadresse - Organisasjonsform - Stiftelsesdato - Antall ansatte - Nøkkelinformasjon fra Brønnøysundregistrene

Manuell oppdatering

Brukere kan manuelt oppdatere klubbinformasjon: - Kontaktinformasjon - Beskrivelse av virksomhet - Medlemstall - Budsjettinformasjon

// Eksempel: Hent organisasjonsdata
const updateFromBrreg = async (orgNumber: string) => {
  const data = await fetchBrregData(orgNumber);
  await updateUserProfile(userId, {
    organizationName: data.navn,
    address: data.forretningsadresse,
    // ... mer data
  });
};

📄 Dokumentbibliotek

Dokumenttyper

Støttede dokumenter: - 📋 Vedtekter - 📊 Årsmeldinger - 💰 Budsjetter - 📈 Årsregnskap - 📝 Andre relevante dokumenter

Funksjonalitet

  • Opplasting: Dra-og-slipp eller filvelger
  • Kategorisering: Automatisk eller manuell tagging
  • Nedlasting: Direkte nedlasting av lagrede filer
  • Sletting: Fjern utdaterte dokumenter
interface ClubDocument {
  id: string;
  name: string;
  url: string;
  type: 'vedtekter' | 'aarsmelding' | 'budsjett' | 'regnskap' | 'other';
  uploadedAt: Date;
  size: number;
}

🔍 Søknadsradar

AI-drevet søk

Gemini AI analyserer klubbprofilen og finner relevante støtteordninger basert på: - Organisasjonstype - Geografisk plassering - Aktivitetsområde - Budsjett og behov

Støtteordningsoversikt

Visning av: - Tittel og beskrivelse - Søknadsfrist - Beløpsramme - Tildeler/leverandør - Direkte lenke til søknadsskjema

Filtrering og sortering

  • Søk etter nøkkelord
  • Filtrer på frist, beløp, leverandør
  • Sorter etter relevans eller dato

📋 Mal-database

Tilgjengelige maler

Hver støtteordning kan ha tilknyttede maler: - PDF-søknadsskjemaer - Word-dokumentmaler - Excel-budsjettkalkulator er - Veiledningsdokumenter

Nedlasting

Brukere kan laste ned maler direkte fra støtteordningskortet:

const FundingCard = ({ opportunity }: Props) => {
  return (
    <div>
      {opportunity.templates?.map(template => (
        <a href={template.url} download>
          {template.name}
        </a>
      ))}
    </div>
  );
};

🤖 AI-Assistent

Søknadsutkast

AI-assistenten kan generere utkast til søknader basert på: - Klubbens profil og data - Tidligere innsendte søknader - Støtteordningens krav - Best practices

Hvordan det fungerer

  1. Bruker klikker "Få skrivehjelp" på et støtteordningskort
  2. AI analyserer klubbdata og støtteordningen
  3. Genererer strukturert søknadsutkast
  4. Bruker kan redigere og tilpasse teksten
const generateDraft = async (
  opportunity: FundingOpportunity,
  userProfile: UserProfile
) => {
  const prompt = `
    Skriv et søknadsutkast for ${userProfile.organizationName}
    som søker om støtte fra ${opportunity.title}.

    Klubbinformasjon:
    - Organisasjonsnummer: ${userProfile.organizationNumber}
    - Aktivitet: ${userProfile.description}

    Støtteordning:
    ${opportunity.description}
  `;

  return await geminiService.generate(prompt);
};

🛠️ Admin-verktøy

Kun tilgjengelig for Superadmin-brukere

Administrer støtteordninger

  • Opprett: Legg til nye globale støtteordninger
  • Rediger: Oppdater eksisterende ordninger
  • Slett: Fjern utdaterte ordninger
  • Last opp maler: Knytt filer til støtteordninger

CRUD-operasjoner

// Opprett ny støtteordning
const createOpportunity = async (data: FundingOpportunity) => {
  await firestore.collection('globalOpportunities').add(data);
};

// Oppdater eksisterende
const updateOpportunity = async (id: string, data: Partial<FundingOpportunity>) => {
  await firestore.collection('globalOpportunities').doc(id).update(data);
};

// Slett
const deleteOpportunity = async (id: string) => {
  await firestore.collection('globalOpportunities').doc(id).delete();
};

Maladministrasjon

  • Last opp PDF-, Word-, eller Excel-filer
  • Knytt maler til spesifikke støtteordninger
  • Administrer filnavn og metadata

🔄 Dataflyt

Typisk brukerflyt

graph TD A[Bruker logger inn] --> B[Henter klubbprofil] B --> C[Søker etter støtteordninger] C --> D[AI analyserer og foreslår] D --> E[Bruker velger støtteordning] E --> F[Laster ned maler] E --> G[Får AI-generert utkast] F --> H[Fyller ut søknad] G --> H H --> I[Sender inn eksternt]

📊 Datamodeller

UserProfile

interface UserProfile {
  uid: string;
  email: string;
  organizationNumber?: string;
  organizationName?: string;
  address?: string;
  postalCode?: string;
  city?: string;
  description?: string;
  memberCount?: number;
  role: 'user' | 'superadmin';
  createdAt: Date;
}

FundingOpportunity

interface FundingOpportunity {
  id: string;
  title: string;
  description: string;
  deadline?: string;
  amount?: string;
  provider: string;
  url?: string;
  category?: string;
  eligibility?: string[];
  templates?: ClubDocument[];
  createdAt: Date;
  updatedAt: Date;
}

ClubDocument

interface ClubDocument {
  id: string;
  name: string;
  url: string;
  type: 'vedtekter' | 'aarsmelding' | 'budsjett' | 'regnskap' | 'template' | 'other';
  uploadedAt: Date;
  size: number;
  mimeType: string;
}

🔮 Kommende funksjoner

Phase 5: Smart Budget Builder

  • Interaktiv budsjettkalkulator
  • PDF-eksport av budsjett
  • Historisk budsjettoversikt
  • Budsjettmaler for forskjellige formål

Fremtidige ideer

  • Kalenderintegrasjon for søknadsfrister
  • E-postvarsler om nye støtteordninger
  • Dashboard med statistikk
  • Samarbeidsverktøy for flere brukere per organisasjon

Neste: Neste steg →