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¶
- Bruker klikker "Få skrivehjelp" på et støtteordningskort
- AI analyserer klubbdata og støtteordningen
- Genererer strukturert søknadsutkast
- 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¶
📊 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 →